从不同数据库备份/还原导致无法获得还原失败的独占访问权限

时间:2013-12-19 06:23:06

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

我有一个数据库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]

没有现有连接

2 个答案:

答案 0 :(得分:69)

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

答案 1 :(得分:5)

答案非常简单,

运行此命令以获取LogicalNames,

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

然后只需将LogicalName放在下面,

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