目前,我的数据库处于单用户模式。当我试图扩展我的数据库,我得到一个错误:
数据库my_db不可访问。
此外,当我试图删除数据库时,我得到错误:
无法更改数据库'my_db'的状态或选项 这一次。数据库为单用户模式,用户为 当前连接到它。
如何退出单用户模式?我没有任何用户使用这个数据库。
当我尝试用IIS浏览我的网站时,我得到的错误是:
类的执行期间生成了未处理的异常 当前的web请求。关于起源和位置的信息 可以使用下面的异常堆栈跟踪来识别异常。
我觉得这是单用户模式造成的。
目前,我的数据库处于单用户模式。当我试图扩展我的数据库,我得到一个错误:
数据库my_db不可访问。
此外,当我试图删除数据库时,我得到错误:
无法更改数据库'my_db'的状态或选项 这一次。数据库为单用户模式,用户为 当前连接到它。
如何退出单用户模式?我没有任何用户使用这个数据库。
当我尝试用IIS浏览我的网站时,我得到的错误是:
类的执行期间生成了未处理的异常 当前的web请求。关于起源和位置的信息 可以使用下面的异常堆栈跟踪来识别异常。
我觉得这是单用户模式造成的。
当前回答
我试过了,有效果
ALTER DATABASE dbName SET MULTI_USER WITH ROLLBACK IMMEDIATE
其他回答
我试过了,有效果
ALTER DATABASE dbName SET MULTI_USER WITH ROLLBACK IMMEDIATE
下面的方法对我很有效:
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
以防万一,如果有人无意中发现了这个线程,那么这里有一个防弹的解决方案,SQL Server卡在单用户模式
——获取需要终止的连接的进程ID (spid) —将'DBName'替换为数据库的实际名称
SELECT sd.[name], sp.spid, sp.login_time, sp.loginame
FROM sysprocesses sp
INNER JOIN sysdatabases sd on sp.dbid = sd.dbid
WHERE sd.[name] = 'DBName'
作为一种替代方法,你也可以使用命令" sp_who "来获取打开连接的" spid ":
或者用这个SP代替
exec sp_who
—然后执行以下命令,将[spid]和[DBName]替换为正确的值
KILL SpidToKillGoesHere
GO
SET DEADLOCK_PRIORITY HIGH
GO
ALTER DATABASE [DBName] SET MULTI_USER WITH ROLLBACK IMMEDIATE
GO
按CTRL + 1
找到锁定数据库的进程。在dbname列中查找您的db并注意spid。现在你必须执行这个语句:
kill <your spid>
ALTER DATABASE <your db> SET MULTI_USER;
要切换出单用户模式,请尝试:
设置数据库的多用户
要切换回单用户模式,您可以使用:
修改数据库[my_db