【发布时间】:2013-08-20 17:33:53
【问题描述】:
使用这个我成功备份了我的数据库:
Server myServer = new Server(@"PC-1\INSTANCE1");
private void button1_Click(object sender, EventArgs e)
{
try
{
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
Backup bkpDBFull = new Backup();
bkpDBFull.Action = BackupActionType.Database;
bkpDBFull.Database = "MyDatabase";
BackupDeviceItem bkpDevice = new BackupDeviceItem(saveFileDialog1.FileName, DeviceType.File);
bkpDBFull.Devices.Add(bkpDevice);
bkpDBFull.BackupSetName = "Sample";
bkpDBFull.BackupSetDescription = "Sample";
bkpDBFull.SqlBackup(myServer);
}
}
catch (SmoException ex)
{
throw new SmoException(ex.Message, ex.InnerException);
}
}
但我在还原时遇到错误Restore failed for Server 'PC-1\INSTANCE1'.
private void button2_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
Restore restoreDB = new Restore();
restoreDB.Database = "MyDatabase";
restoreDB.Action = RestoreActionType.Database;
BackupDeviceItem bkpDevice = new BackupDeviceItem(openFileDialog1.FileName, DeviceType.File);
restoreDB.Devices.Add(bkpDevice);
restoreDB.ReplaceDatabase = true;
restoreDB.SqlRestore(myServer);
}
}
我在备份和恢复中使用同一台服务器。为什么使用相同的服务器和数据库备份成功,但恢复失败?
【问题讨论】:
-
SQL Server 错误日志中的内容是什么?可能是因为在您尝试还原时打开了数据库连接,它无法获得独占访问权限,然后还原失败。
-
恢复服务器“PC-1\INSTANCE1”失败。 SSMS 在操作期间关闭。
-
恢复已经存在的数据库宽度databasename也可能导致这个问题。
-
应该有一个 InnerException 或先前的日志条目,对失败的原因提供额外的解释。 (虽然如果我不得不猜测,我会尝试覆盖正在使用的 DB 或 DB 文件)。
-
这个错误与尾日志备份有关吗?
标签: c# winforms sql-server-2008-r2 smo database-restore