我正在将名为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'
的恢复失败
谁能告诉我哪里出错?
答案 0 :(得分:1)
尝试更改:
restore.Database = "C:\\databasebkup.bak";
为:
restore.Database = "MyDatabase";
此外,您似乎正在使用Windows身份验证进行连接;确保当前登录的用户具有进行备份的正确权限。
答案 1 :(得分:0)
您将备份文件名放在错误的属性中,完全忘记指定数据库名称本身。再次阅读Database
和MediaName
属性的文档。
http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.restore.aspx