我已经使用此代码大约 2 年将 2008 r2 备份恢复到 2008 r2 并且每次都有效。我现在正在尝试使用相同的代码从 2008 r2 备份恢复到 2012 localdb,但每次都失败。错误消息如下。不仅恢复失败,它使我当前的数据库处于“恢复挂起”状态,并且无法使用。我正在使用 c#,这一切都必须以编程方式完成,无需用户或 DBA 参与。你能帮我让这件事重回正轨吗?
using(var connection = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand();
cmd.CommandText = String.Format("Alter Database {0} SET SINGLE_USER With ROLLBACK IMMEDIATE", dbName);
cmd.CommandType = CommandType.Text;
cmd.Connection = connection;
connection.Open();
cmd.ExecuteNonQuery();
SqlCommand cmd2 = new SqlCommand();
cmd2.CommandText = String.Format(@"RESTORE DATABASE {0} FROM DISK = '{1}'", dbName, backupFilePath);
cmd2.CommandType = CommandType.Text;
cmd2.Connection = connection;
cmd2.ExecuteNonQuery();
}
System.Data.SqlClient.SqlException (0x80131904):找不到逻辑数据库文件“MyData_log”。指定文件的完整路径。RESTORE 无法启动数据库“MyData”。RESTORE DATABASE 异常终止。
编辑:将一行更改为
cmd2.CommandText = String.Format(@"RESTORE DATABASE {0} FROM DISK = '{1}' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 5", dbName, backupFilePath);
到目前为止没有任何区别。