目前,我的数据库处于单用户模式。当我试图扩展我的数据库,我得到一个错误:

数据库my_db不可访问。

此外,当我试图删除数据库时,我得到错误:

无法更改数据库'my_db'的状态或选项 这一次。数据库为单用户模式,用户为 当前连接到它。

如何退出单用户模式?我没有任何用户使用这个数据库。

当我尝试用IIS浏览我的网站时,我得到的错误是:

类的执行期间生成了未处理的异常 当前的web请求。关于起源和位置的信息 可以使用下面的异常堆栈跟踪来识别异常。

我觉得这是单用户模式造成的。


当前回答

即使我遇到同样的问题,无法找到my_db的活动连接来杀死它,但仍然显示同样的错误。我最终断开了服务器上任何数据库的所有可能的SSMS连接,从SSMS创建一个新连接,并将其更改为多用户。

-- Actual Code to change my_db to multi user mode
USE MASTER;
GO
ALTER DATABASE [my_db] SET MULTI_USER

注意:这似乎是SQL Server 2005中的一个可能的错误!

其他回答

在Jespers的回答中,为了更有效地补充:

SET DEADLOCK_PRIORITY 10;-- Be the top dog.

SET DEADLOCK_PRIORITY HIGH使用DEADLOCK_PRIORITY为5。

发生的事情是,其他进程在数据库中受到了破坏,如果您的进程具有较低的DEADLOCK_PRIORITY,那么它就会输掉这场比赛。

这避免了寻找和杀死另一只蜘蛛(这可能需要做几次)。

您可能需要运行ALTER DATABASE不止一次(但Jesper会这样做)。修改代码:

USE [master]
SET DEADLOCK_PRIORITY HIGH
exec sp_dboption '[StuckDB]', 'single user', 'FALSE';
ALTER DATABASE [StuckDB] SET MULTI_USER WITH NO_WAIT
ALTER DATABASE [StuckDB] SET MULTI_USER WITH ROLLBACK IMMEDIATE

要切换出单用户模式,请尝试:

设置数据库的多用户

要切换回单用户模式,您可以使用:

修改数据库[my_db

今天我遇到了同样的问题,我的数据库从多用户模式改为单用户模式,这最终阻止了我发布数据库。

为了解决这个问题,我不得不关闭所有Visual Studio实例,并在Sql Server查询窗口中运行以下命令-

USE [Your_Database_Name]; ALTER DATABASE [Your_Database_Name] SET MULTI_USER GO

这个命令将数据库从单用户更改为多用户,之后,我成功地能够发布。

使用主

GO

选择d.s ame, d.s dbid, spid, login_time, nt_domain, nt_username, loginame 从sysprocesses p内部连接sysdatabases d在p.dbid = d.dbid where d.name = '数据库名'

杀死568 -杀死蜘蛛

修改数据库名称

设置MULTI_USER 去

另一种选择是:

使数据库脱机;在短信服务中,右键单击数据库,选择脱机,勾选“删除所有连接” 运行ALTER DATABASE [Your_Db] SET MULTI_USER