恢复SQL Server数据库时出现问题

本文关键字:问题 数据库 SQL Server 恢复 | 更新日期: 2023-09-27 18:07:07

我已经工作了几个小时了,现在试图弄清楚为什么我不能让我的c#应用程序恢复SQL Server 2008数据库。我使用以下代码:

var conn = new SqlConnection("SERVER=Server;DATABASE=master;User ID=sa;Pwd=Password");
var srvConn = new ServerConnection(conn);
var srv = new Server(srvConn);
Restore res = new Restore();
res.Database = "RestoredDatabase";
res.Action = RestoreActionType.Database;
res.Devices.AddDevice("Path to .bak-file", DeviceType.File);
res.ReplaceDatabase = false;
res.SqlRestore(srv);

当我运行代码时,什么也没有发生。没有错误或异常发生!我一直在网上寻找解决方案,但所有的例子都是完全一样的,所以没有帮助。

可能是连接有问题,或者是。bak文件有问题?

我很惊讶在使用Microsoft.SqlServer.Management.Smo.

恢复SQL Server数据库时出现问题

中的对象时没有真正的调试功能,例如异常。
    首先,尝试使用管理工作室选项恢复数据库,使用相同的身份验证信息和相同的. bak。如果它不工作,问题不在你的代码。
  • 如果第一个实验工作正常,并且假设数据库已经创建,在启动恢复之前确保没有人连接到它。您可以在Sql Server中执行指令sp_who2以确保没有连接到该数据库。

如果愿意,还可以滚动自己的代码。我在一些集成测试中使用此方法将数据库恢复到干净状态。我将数据库重置为单用户模式,所以如果有人连接到它-它会踢掉他们,所以我可以恢复它。

StringBuilder sb = new StringBuilder();
sb.Append("ALTER DATABASE ");
sb.Append(" [");
sb.Append(databasename);
sb.Append("] ");
sb.Append(" SET SINGLE_USER WITH ROLLBACK IMMEDIATE;");
sb.Append("RESTORE DATABASE ");
sb.Append(" [");
sb.Append(databasename);
sb.Append("] ");
sb.Append(@" FROM DISK = N'D:'SQLBACKUPS'AUTOMATION'");
sb.Append(backupfilename);
sb.Append("' WITH FILE=1, NOUNLOAD, REPLACE, STATS=10");
return sb.ToString();

然后创建一个sql命令对象,并将字符串生成器的结果作为命令文本传入,然后执行。

这可能是一些权限问题,因此有时恢复也不会发生。尝试先用您的用户名和密码可以访问的本地数据库恢复"。bak"文件。无论如何,请访问Sql BackupRestore网站,了解使用c# .net进行Sql备份的更多细节。