恢复sql备份时出错

时间:2011-11-18 12:40:05

标签: sql-server sql-server-2005

我正在将名为databasebkup.bak的文件(保存在C:\\databasebkup.bak)中的数据库还原到名为MyDatabase的Sql Server 2005数据库。

我引用了Microsoft.SqlServer.Management.Common;Microsoft.SqlServer.Management.Sdk.Sfc; 我的代码中有Microsoft.SqlServer.Management.Smo,如下所示:

Microsoft.SqlServer.Management.Smo.Server smoServer = new Server(
                                                        new ServerConnection("."));
Database db = smoServer.Databases["MyDatabase"];
string dbPath = Path.Combine(db.PrimaryFilePath, "MyDatabase.mdf");
string logPath = Path.Combine(db.PrimaryFilePath, "MyDatabase_Log.ldf");

Restore restore = new Restore();
var deviceItem = new BackupDeviceItem("C:\\databasebkup.bak", DeviceType.File);

restore.Devices.Add(deviceItem);
restore.Database = "C:\\databasebkup.bak";

//restore.FileNumber = restoreFileNumber;
restore.Action = RestoreActionType.Database;
restore.ReplaceDatabase = true;
restore.SqlRestore(smoServer);

db.SetOnline();
smoServer.Refresh();
db.Refresh();

但在恢复时,它会返回此错误:

  

服务器servername'

的恢复失败

谁能告诉我哪里出错?

2 个答案:

答案 0 :(得分:1)

尝试更改:

restore.Database = "C:\\databasebkup.bak";

为:

restore.Database = "MyDatabase";

此外,您似乎正在使用Windows身份验证进行连接;确保当前登录的用户具有进行备份的正确权限。

答案 1 :(得分:0)

您将备份文件名放在错误的属性中,完全忘记指定数据库名称本身。再次阅读DatabaseMediaName属性的文档。

http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.restore.aspx