在本地数据库上执行数据库部署(来自VS SQL Server数据库项目)失败后,数据库处于保持单用户模式的状态(部署以单用户模式运行) 。
当我从SSMS连接到它并尝试以下内容时:
ALTER DATABASE MyDatabase
SET MULTI_USER;
GO
我收到错误:
目前无法更改数据库'MyDatabase'的状态或选项。数据库处于单用户模式,用户当前已连接到该模式。
我尝试使数据库脱机,SSMS告诉我成功,但实际上并没有做任何事情。到目前为止,我只能通过删除和重新创建数据库来解决这个问题(这有点好,因为它只是一个本地测试数据库)。但是,我希望能够重置状态。
如何说服SQL Server将此数据库从单用户模式中删除?
答案 0 :(得分:98)
首次运行后,在master数据库中进行查询
exec sp_who
如果找不到罪魁祸首,请尝试
SELECT request_session_id FROM sys.dm_tran_locks
WHERE resource_database_id = DB_ID('YourDatabase')
然后使用以下查询终止使用您的数据库的所有进程:
KILL spid
然后运行以下查询:
USE Master
ALTER DATABASE YourDatabase SET MULTI_USER
答案 1 :(得分:1)
答案为here,代码为:
use master
ALTER DATABASE YourDatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE
--do you stuff here
ALTER DATABASE YourDatabase SET MULTI_USER
答案 2 :(得分:0)
使用 DAC (Dedicated Admin Connection) 。确保先启用它 在管理员的SSMS类型中:用于服务器名称 连接到主ALTER DATABASE SET MULTI_USER
后答案 3 :(得分:0)
尝试以下命令
首先运行这三个命令
USE [master]
SET DEADLOCK_PRIORITY HIGH
exec sp_dboption MyDBName, 'single user', 'FALSE';
第二次运行这两个命令
ALTER DATABASE MyDBName SET MULTI_USER WITH NO_WAIT
ALTER DATABASE MyDBName SET MULTI_USER WITH ROLLBACK IMMEDIATE
答案 4 :(得分:0)
要强制执行更新,请使用“立即回滚”
具有立即回滚功能的ALTER DATABASE [dataBase] SET MULTI_USER