我正在使用SQL Server 2008 R2,我需要从.bak文件恢复数据库。在重新启动SQL Server服务之前,始终存在数据库正在使用的错误。
有更好的选择吗?
答案 0 :(得分:61)
使用此代码在恢复之前销毁所有现有连接:
USE master;
GO
ALTER DATABASE YourDB
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
ALTER DATABASE YourDB
SET MULTI_USER;
GO
答案 1 :(得分:32)
答案 2 :(得分:4)
重新启动SQL服务可以解决我的问题。
答案 3 :(得分:1)
问题是您的数据库当前正被其他人使用,并且可能具有开放连接。您需要做的是关闭与它的所有现有连接,然后恢复备份。
以下是显示如何终止活动连接的链接:http://wiki.lessthandot.com/index.php/Kill_All_Active_Connections_To_A_Database
答案 4 :(得分:1)
USe活动监视并过滤您要恢复的数据库。然后与正在使用它的用户核实并确保可以重新安排数据库。然后运行以下查询。
USE Master
KILL <session_id from activity monitor>
答案 5 :(得分:0)
如果仍未解决,请尝试执行以下
Restore database YOUR_DB_NAME with recovery
希望有所帮助
答案 6 :(得分:0)
关闭数据库引擎,然后重新启动它。不要仅仅重启,因为它不会完全停止实例。该错误可能是假的,但请检查您的环境以确认没有正在运行的应用程序在失去数据库连接后会自动重新连接。
我从未找到答案来解释为什么将从文件还原到新数据库被视为“正在使用”。
有时候,@ Serjik的回答将原始数据库降级为单用户并返回对我有用。大约80%的时间,我必须先将其关闭然后重新启动,然后才能通过SQL Server Management Server还原。
答案 7 :(得分:-1)
尝试使用SQL
进行恢复RESTORE DATABASE my_new_database FROM disk = 'E:\path\name.bak'
有时我遇到了UI的这些问题但是在SQL语句中运行良好。 您需要在恢复之前终止所有打开的进程,有时由于Windows或SQL安装文件的某些问题,进程无法自行关闭。