Sqlserver 根据bak 文件进行还原
public bool InitDataBaseBak(string bakpath)
{
try
{
using (SqlConnection connection = new SqlConnection(ConnectionString))
{
//SqlCommand command = new SqlCommand(sqlRestoreDatabase, connection);
var strsql = " restore filelistonly from disk = '" + bakpath + "'";
SqlDataAdapter Adapter2 = new SqlDataAdapter(strsql, connection);
var dt = new DataTable();
lock (Adapter2)
{
Adapter2.Fill(dt);
}
var dataBaseName = dt.Rows[0][0].ToString();
var log= dt.Rows[1][0].ToString();
var mdfpath = dt.Rows[0][1].ToString();
var logpath = dt.Rows[1][1].ToString();
string InitDatabaseSql =string.Format(@"restore database {0} from disk = '{1}'
with REPLACE
, move '{2}' to '{3}'
,move '{4}' to '{5}'", dataBaseName, bakpath, dataBaseName, mdfpath, log, logpath);
SqlCommand command = new SqlCommand(InitDatabaseSql, connection);
connection.Open();
command.ExecuteNonQuery();
connection.Close();
}
return true;
}
catch (Exception e)
{
return false;
throw;
}
}
检测bak 文件是否完整
restore filelistonly from disk = ‘bak文件所在位置’
关闭数据库现有链接
use master
alter database ’ 数据库名称‘ set offline with rollback immediate