【问题标题】:Backup/Restore from different database causing Restore failed exclusive access could not be obtained从不同的数据库备份/恢复导致恢复失败无法获得独占访问
【发布时间】:2014-01-07 14:38:00
【问题描述】:

我有一个数据库 A。我已经对名为 A.bak 的数据库 A 进行了备份。我创建了一个新的数据库 B。现在,我右键单击并从 A.bak 还原 B。在恢复对话框中,我检查了覆盖现有数据库并将 LogicalFileName 从 C:\Program Files\Microsoft SQL Server\MSSQL11.SQLSERVER2012\MSSQL\DATA\A.mdf 更改为 C:\Program Files\Microsoft SQL Server\MSSQL11.SQLSERVER2012\MSSQL\DATA\B.mdf 并对 ldf 文件执行相同操作。但我得到了

Exclusive access could not be obtained because the database is in use.

也试过了,

ALTER DATABASE [B] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;

还有sp_who2,没有[B]的现有连接

【问题讨论】:

    标签: sql sql-server sql-server-2012


    【解决方案1】:

    尝试获得独占访问的原因来自 SQL Server 2012 Management Studio 中还原对话框的选项页面。它将打开尾日志并保留 SOURCE 数据库的恢复状态选项。因此,它将尝试获得对源数据库(在本例中为 A)的独占访问权以执行此操作。如果关闭tail log选项,你会发现运行起来流畅很多。

    【讨论】:

    • 工作顺利。直接回答
    【解决方案2】:

    答案很简单,

    运行此命令以获取逻辑名称,

    RESTORE FILELISTONLY FROM DISK = 'C:\Users\MyUSer\Desktop\A.bak'
    

    然后只需将逻辑名称放在下面,

    RESTORE DATABASE B
       FROM DISK = 'C:\Users\MyUSer\Desktop\A.bak'
       WITH 
       MOVE 'LogicalName' TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.SQLSERVER2012\MSSQL\Data\B.mdf', 
       MOVE 'LogicalName_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.SQLSERVER2012\MSSQL\Data\B.ldf'
    GO
    

    请注意,您可能需要更改路径。有用的链接,

    How to restore to a different database in sql server?

    http://technet.microsoft.com/en-us/library/ms186390.aspx

    【讨论】:

      【解决方案3】:

      B. “恢复数据库”对话框将显示在常规页面上 1. 恢复数据库的名称出现在 To database 列表框中。要创建新数据库,请在列表框中输入其名称。

      1. 选择“来自设备”

      2. 单击按钮显示“指定备份”对话框

      3. 单击“添加”以浏览目录中的 .bak 文件,然后单击确定

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多