我正在练习将 SharePoint 2010 迁移到 2013,但在恢复数据库时遇到了问题。在 SP2010/SQL 2008 服务器上备份数据库后,我尝试将其恢复到我在 SP2013/SQL 2012 服务器上新创建的数据库。
通过 UI,我已将目标数据库脱机。我选择文件.bak
,选择目标数据库,然后尝试恢复。我收到一条错误:Exclusive access could not be obtained because the database is in use.
为什么会发生这种情况?我已经将数据库脱机,我不知道它怎么可能还在使用。
在恢复窗口中,我尝试进入选项并选择Overwrite the existing database (WITH REPLACE)
以及Close existing connections to destination database
。
错误信息还是一样。我该如何解决这个错误?
答案1
您是当前正在使用数据库的人吗?:)
在进行恢复之前尝试运行此操作:
USE master
Go
ALTER DATABASE YourDB
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
这应该能让每个人都开始行动。如果没有,那么您肯定是当前正在使用该数据库的人。关闭所有使用该数据库的 SSMS 窗口并运行:
ALTER DATABASE YourDB
SET offline
答案2
这里有很多问题,还有一些我没有提到的问题,它们都是问题的一部分。这是从 SQL 2008 实例中获取的数据库备份,并在 SQL 2012 实例上恢复。这段 T-SQL 终于做到了:
RESTORE DATABASE [WSS_Content_Migrated]
FROM DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL\MSSQL\Backup\WSS_Content.bak' WITH
MOVE 'WSS_Content' TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL\MSSQL\Backup\WSS_Content.mdf',
MOVE 'WSS_Content_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL\MSSQL\Backup\WSS_Content.ldf'
, REPLACE