我在C#中编写了一个使用SQL 2008的程序。
我想备份数据库并将其恢复。我的备份代码工作正常,但恢复不起作用,数据库成为单个用户。
收到以下错误:
数据库日志的尾部 “医生”没有得到支持。使用 用NORECOVERY备份日志备份 日志,如果它包含你没有的工作 想要输。使用WITH REPLACE或 RESTORE的WITH STOPAT子句 声明只是覆盖了 日志的内容。 RESTORE DATABASE 正在异常终止。 正在进行不合格的交易 回滚。估计回滚
我的代码:
private void Backup(string strFileName)
{
try
{
string command = @"BACKUP DATABASE doctor TO DISK='"+ strFileName+"'";
SqlCommand oCommand = null;
SqlConnection oConnection = null;
oConnection = new SqlConnection("Data Source=.;Initial Catalog=doctor;Integrated Security=True");
if (oConnection.State != ConnectionState.Open)
oConnection.Open();
oCommand = new SqlCommand(command, oConnection);
oCommand.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void Restore(string strFileName)
{
try
{
string command = "ALTER DATABASE doctor SET SINGLE_USER with ROLLBACK IMMEDIATE " + "use master " + " RESTORE DATABASE doctor FROM DISK='" + strFileName + "'";
SqlCommand oCommand = null;
SqlConnection oConnection = null;
oConnection = new SqlConnection("Data Source=.;Initial Catalog=doctor;Integrated Security=True");
if (oConnection.State == ConnectionState.Closed)
{
oConnection.Open();
oCommand = new SqlCommand(command, oConnection);
oCommand.ExecuteNonQuery();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
答案 0 :(得分:1)
我想如果你结束
“WITH REPLACE”
使用恢复字符串可以正常工作。
答案 1 :(得分:1)
答案 2 :(得分:0)
您的数据库似乎正在使用完全恢复模式,并且在正常情况下需要进行日志备份。
根据您的情况,Nima的答案可能就足够了。
有关该主题的更多信息,请参阅MSND上的以下主题: