Sql根据bak文件还原

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

你可能感兴趣的:(Sql根据bak文件还原)