我用c#写了个备份和还原数据库的程序,可备份能成功,还原不成功,请教各位大侠问题出在哪里呢?数据库是MSSQL。以下是我的还原数据库的程序。提示错误是无法获取数据库的排他访问权。备份数据库也是这种方式可以成功。public static bool restoreDb(string dbName, string backupFile)
{
SqlConnection con = getCon();
string sql = "use master;restore database @dbname from disk=@backupfile with replace;"; SqlCommand cmd = new SqlCommand(sql, con);
cmd.Parameters.Add(new SqlParameter(@"dbname", SqlDbType.NVarChar));
cmd.Parameters.Add(new SqlParameter(@"backupfile", SqlDbType.NVarChar));
cmd.Parameters[@"dbname"].Value = dbName;
cmd.Parameters[@"backupfile"].Value = backupFile;
try
{
con.Open();
int i = cmd.ExecuteNonQuery();
if (i == 0)//如果执行失败返回假
{
return false;
}
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
return false;
}
finally
{
con.Close();
}
return true;//执行成功返回真
}
{
SqlConnection con = getCon();
string sql = "use master;restore database @dbname from disk=@backupfile with replace;"; SqlCommand cmd = new SqlCommand(sql, con);
cmd.Parameters.Add(new SqlParameter(@"dbname", SqlDbType.NVarChar));
cmd.Parameters.Add(new SqlParameter(@"backupfile", SqlDbType.NVarChar));
cmd.Parameters[@"dbname"].Value = dbName;
cmd.Parameters[@"backupfile"].Value = backupFile;
try
{
con.Open();
int i = cmd.ExecuteNonQuery();
if (i == 0)//如果执行失败返回假
{
return false;
}
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
return false;
}
finally
{
con.Close();
}
return true;//执行成功返回真
}
FROM DISK = 'c:\Northwind.bak'
WITH MOVE 'Northwind' TO 'c:\test\testdb.mdf',
MOVE 'Northwind_log' TO 'c:\test\testdb.ldf'
GO