//很多人在做还原数据库的时候``一定遇到过`数据库排它访问权的问题`
public bool revertDB()
{
string path = System.Configuration.ConfigurationSettings.AppSettings["backup"];
string dbname = "HRIS";
string restoreSql = "use master;";
restoreSql += "restore database @dbname from disk = @path;";
string pai = "use master;ALTER DATABASE 数据库名称 SET OFFLINE WITH ROLLBACK IMMEDIATE;ALTER DATABASE 数据库名称 SET ONLINE WITH ROLLBACK IMMEDIATE";
openCon();
SqlCommand com1 = new SqlCommand(pai, con);
SqlCommand myCommand = new SqlCommand(restoreSql, con);
myCommand.Parameters.Add("@dbname", SqlDbType.Char);
myCommand.Parameters["@dbname"].Value = dbname;
myCommand.Parameters.Add("@path", SqlDbType.Char);
myCommand.Parameters["@path"].Value = path;
try
{
com1.ExecuteNonQuery();
myCommand.ExecuteNonQuery();
return true;
}
catch (Exception ex)
{
return false;
}
finally
{
closeCon();
}
}
public bool revertDB()
{
string path = System.Configuration.ConfigurationSettings.AppSettings["backup"];
string dbname = "HRIS";
string restoreSql = "use master;";
restoreSql += "restore database @dbname from disk = @path;";
string pai = "use master;ALTER DATABASE 数据库名称 SET OFFLINE WITH ROLLBACK IMMEDIATE;ALTER DATABASE 数据库名称 SET ONLINE WITH ROLLBACK IMMEDIATE";
openCon();
SqlCommand com1 = new SqlCommand(pai, con);
SqlCommand myCommand = new SqlCommand(restoreSql, con);
myCommand.Parameters.Add("@dbname", SqlDbType.Char);
myCommand.Parameters["@dbname"].Value = dbname;
myCommand.Parameters.Add("@path", SqlDbType.Char);
myCommand.Parameters["@path"].Value = path;
try
{
com1.ExecuteNonQuery();
myCommand.ExecuteNonQuery();
return true;
}
catch (Exception ex)
{
return false;
}
finally
{
closeCon();
}
}