我有一个数据库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]
没有现有连接答案 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
注意您可能需要更改路径。有用的链接,