SQL Server 2008 R2陷入单用户模式

时间:2014-07-07 10:41:31

标签: sql sql-server database sql-server-2008 database-deployment

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

当我从SSMS连接到它并尝试以下内容时:

ALTER DATABASE MyDatabase
SET MULTI_USER;
GO

我收到错误:

  

目前无法更改数据库'MyDatabase'的状态或选项。数据库处于单用户模式,用户当前已连接到该模式。

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

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

5 个答案:

答案 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