47

在本地数据库上执行数据库部署(来自 VS SQL Server 数据库项目)失败后,数据库处于单用户模式(部署以单用户模式运行)的状态。

当我从 SSMS 连接到它并尝试以下操作时:

ALTER DATABASE MyDatabase
SET MULTI_USER;
GO

我得到错误:

目前无法更改数据库“MyDatabase”的状态或选项。数据库处于单用户模式,并且当前有一个用户连接到它。

我尝试使数据库脱机,SSMS 告诉我成功,但它似乎并没有真正做任何事情。到目前为止,我只能通过删除并重新创建数据库来解决这个问题(这还可以,因为它只是一个本地测试数据库)。但是,我希望能够重置状态。

如何说服 SQL Server 将此数据库从单用户模式中移除?

4

5 回答 5

159

在第一次在主数据库中运行以下查询

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
于 2014-07-07T10:55:51.607 回答
4

试试下面的命令

首先运行这三个命令

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
于 2017-11-07T13:32:15.883 回答
1

这在这里得到了回答,代码是:

use master
ALTER DATABASE YourDatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE 

--do you stuff here 

ALTER DATABASE YourDatabase SET MULTI_USER
于 2014-07-07T10:47:20.687 回答
0

使用DAC(专用管理员连接)。确保首先启用它在 SSMS 中输入 admin: for Server Name after connection to master ALTER DATABASE SET MULTI_USER

于 2014-07-07T10:48:24.370 回答
-1

要强制更新,请使用“立即回滚”

ALTER DATABASE [DATABASE_NAME] SET MULTI_USER  with rollback immediate
于 2019-11-04T13:32:13.437 回答