我正在使用 SQL Server 2008 R2,我需要从 .bak 文件恢复数据库。在我重新启动 SQL Server 服务之前,总是会出现数据库正在使用的错误。
有更好的选择吗?
我正在使用 SQL Server 2008 R2,我需要从 .bak 文件恢复数据库。在我重新启动 SQL Server 服务之前,总是会出现数据库正在使用的错误。
有更好的选择吗?
使用此代码在恢复之前破坏所有现有连接:
USE master;
GO
ALTER DATABASE YourDB
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
ALTER DATABASE YourDB
SET MULTI_USER;
GO
重新启动 SQL 服务解决了我的问题。
问题是您的数据库当前正在被其他人使用,并且可能有打开的连接。您需要做的是关闭与它的所有现有连接,然后恢复备份。
这是一个显示如何终止活动连接的链接:http ://wiki.lessthandot.com/index.php/Kill_All_Active_Connections_To_A_Database
在要恢复的数据库上使用活动监视器和过滤器。然后检查正在使用它的用户,并确保可以重新安装数据库。然后运行以下查询。
USE Master
KILL <session_id from activity monitor>
如果仍未解决,请尝试执行以下操作
Restore database YOUR_DB_NAME with recovery
对我有用的是:
关闭数据库引擎并重新启动它。不要只是重新启动,因为它不会完全停止实例。该错误可能是假的,但请检查您的环境以确认没有在丢失数据库连接后自动重新连接的正在运行的应用程序。
我从来没有找到答案来解释为什么从文件恢复到新数据库被认为是“正在使用”。
有时,@Serjik 将原始数据库降低到单用户并返回的答案对我有用。大约 80% 的时间,我必须将其全部关闭并重新启动,然后才能通过 SQL Server 管理服务器进行恢复。
尝试使用 SQL 恢复
RESTORE DATABASE my_new_database FROM disk = 'E:\path\name.bak'
有时我在 UI 上遇到了这些问题,但在 SQL 语句上工作得很好。您需要在恢复之前杀死所有打开的进程,有时由于您的 Windows 或 SQL 安装文件的一些问题,该进程无法自行关闭。