【发布时间】:2012-10-14 19:59:42
【问题描述】:
我正在使用以下 SMO 代码尝试恢复 SQL Server 数据库:
Server _server;
ServerConnection _conn;
public void Restore(string destinationPath)
{
Restore res = new Restore();
_conn = new ServerConnection { ServerInstance = "." };
_server = new Server(_conn);
try
{
string fileName = destinationPath;
const string databaseName = "RelationAtOffice";
res.Database = databaseName;
res.Action = RestoreActionType.Database;
res.Devices.AddDevice(fileName, DeviceType.File);
res.PercentCompleteNotification = 10;
res.ReplaceDatabase = true;
res.PercentComplete += new PercentCompleteEventHandler(ProgressEventHandler);
res.SqlRestore(_server);
System.Windows.Forms.MessageBox.Show("Restore of " + databaseName + " Complete!", "Restore", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (SmoException exSMO)
{
System.Windows.Forms.MessageBox.Show(exSMO.ToString());
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.ToString());
}
}
为什么将下面的代码链接到正确答案。但是我的代码不起作用? 代码喜欢在一起。我使用了 wpf 和以下链接用户 winapp
SMO 错误:
Microsoft.SqlServer.Management.Smo.FailedOperationException:恢复 服务器“MORTEZA”失败。
---> Microsoft.SqlServer.Management.Smo.SmoException:
System.Data.SqlClient.SqlError:无法获得独占访问 因为数据库正在使用中。
在 Microsoft.SqlServer.Management.Smo.ExecutionManager.ExecuteNonQueryWithMessage(StringCollection 查询,ServerMessageEventHandler dbccMessageHandler,布尔值 错误消息)
在 Microsoft.SqlServer.Management.Smo.BackupRestoreBase.ExecuteSql(服务器 服务器,StringCollection 查询)
在 Microsoft.SqlServer.Management.Smo.Restore.SqlRestore(Server srv)
在 RelationAtOfficeApp.Admin.AdministratorMainPage.Restore(字符串 目的地路径)在 E:\prozhe\RelationAtOfficeApp\RelationAtOfficeApp\RelationAtOfficeApp\Admin\AdministratorMainPage.xaml.cs:268 行
【问题讨论】:
-
你能复制准确的错误信息吗?
-
错误信息:服务器“King”恢复失败
-
您正在尝试恢复到现有数据库,但有人仍在其中。该“某人”可以是您自己的会话之一,因此请确保它们都没有持久存在该数据库中。
标签: wpf sql-server c#-4.0 restore smo