使用C#显示错误还原Sqlserver数据库

时间:2014-01-04 12:23:47

标签: c# sql .net sql-server

我正在尝试备份和恢复sql server 2008r2数据库,并且我成功备份了我的数据库,但问题是当我尝试恢复我的数据库时显示以下错误 服务器'XXXX-PC \ SQLEXPRESS'

的恢复失败

另一个重要的事情是,当我关闭数据库连接时(从服务器资源管理器[右键单击 - >关闭连接]),它正常工作正常

以下是我的备份和还原代码 请帮我解决问题

public static void BackupDatabase(string backUpFile)
{
    ServerConnection con = new ServerConnection(@"XXXX-PC\SQLEXPRESS");
    Server server = new Server(con);
    Backup source = new Backup();
    source.Action = BackupActionType.Database;
    source.Database = "testBD";
    BackupDeviceItem destination = new BackupDeviceItem(backUpFile, DeviceType.File);
    source.Devices.Add(destination);
    //source.Devices.AddDevice(@"G:\MyBackUp.bak", DeviceType.File);
    source.SqlBackup(server);
    con.Disconnect();
}

public static void RestoreDatabase(string backUpFile)
{
    ServerConnection con = new ServerConnection(@"XXXX-PC\SQLEXPRESS");
    Server server = new Server(con);
    Restore destination = new Restore();
    destination.Action = RestoreActionType.Database;
    destination.Database = "testBD";
    BackupDeviceItem source = new BackupDeviceItem(backUpFile, DeviceType.File);

    destination.Devices.Add(source);

    destination.ReplaceDatabase = true;

    con.Disconnect();
    server.ConnectionContext.Disconnect();

    destination.SqlRestore(server);
}

这是错误: enter image description here

这是错误消息:

enter image description here

1 个答案:

答案 0 :(得分:2)

我的猜测是您的还原过程无法获得对数据库的独占访问权限。服务器SMO对象有一个KillAllProcesses method,它将数据库作为一个参数,并按照它在锡上执行的操作。