目前,我的数据库处于单用户模式。当我试图扩展我的数据库,我得到一个错误:
数据库my_db不可访问。
此外,当我试图删除数据库时,我得到错误:
无法更改数据库'my_db'的状态或选项 这一次。数据库为单用户模式,用户为 当前连接到它。
如何退出单用户模式?我没有任何用户使用这个数据库。
当我尝试用IIS浏览我的网站时,我得到的错误是:
类的执行期间生成了未处理的异常 当前的web请求。关于起源和位置的信息 可以使用下面的异常堆栈跟踪来识别异常。
我觉得这是单用户模式造成的。
目前,我的数据库处于单用户模式。当我试图扩展我的数据库,我得到一个错误:
数据库my_db不可访问。
此外,当我试图删除数据库时,我得到错误:
无法更改数据库'my_db'的状态或选项 这一次。数据库为单用户模式,用户为 当前连接到它。
如何退出单用户模式?我没有任何用户使用这个数据库。
当我尝试用IIS浏览我的网站时,我得到的错误是:
类的执行期间生成了未处理的异常 当前的web请求。关于起源和位置的信息 可以使用下面的异常堆栈跟踪来识别异常。
我觉得这是单用户模式造成的。
当前回答
我们刚刚在SQL 2012中经历了这一点。 当我们终止将其设置为单个用户的原始会话时,复制进程跳入。但是sp_who2没有显示附加到DB的新进程。 关闭SSMS并重新打开允许我们在数据库上看到这个进程,然后我们可以立即关闭它并切换到multi_user模式,这是有效的。
我不知道这背后的逻辑,但它确实是SSMS中的一个错误,并且仍然在SQL 2012中表现出来。
其他回答
即使我遇到同样的问题,无法找到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中的一个可能的错误!
要切换出单用户模式,请尝试:
设置数据库的多用户
要切换回单用户模式,您可以使用:
修改数据库[my_db
今天我遇到了同样的问题,我的数据库从多用户模式改为单用户模式,这最终阻止了我发布数据库。
为了解决这个问题,我不得不关闭所有Visual Studio实例,并在Sql Server查询窗口中运行以下命令-
USE [Your_Database_Name]; ALTER DATABASE [Your_Database_Name] SET MULTI_USER GO
这个命令将数据库从单用户更改为多用户,之后,我成功地能够发布。
按CTRL + 1
找到锁定数据库的进程。在dbname列中查找您的db并注意spid。现在你必须执行这个语句:
kill <your spid>
ALTER DATABASE <your db> SET MULTI_USER;
SSMS通常在幕后使用到数据库的多个连接。在改变访问模式之前,你需要杀死这些连接:
首先,确保对象资源管理器指向像master这样的系统数据库。 其次,执行sp_who2并找到到数据库'my_db'的所有连接。 通过Kill {session id}杀死所有的连接,其中session id是sp_who2列出的SPID。 第三,打开一个新的查询窗口。
在这3个步骤之后,执行以下代码。
-- Start in master
USE MASTER;
-- Add users
ALTER DATABASE [my_db] SET MULTI_USER
GO
请参阅我关于管理数据库文件的博客文章。这是为移动文件编写的,但用户管理是相同的。