嘿,目前有一个数据库卡在单一模式,在将它设置为单一模式以尝试使其脱机之后,我希望我从来没有这样做过......
我试过
ALTER DATABASE DB SET MULTI_USER
但得到
消息 5064,级别 16,状态 1,第 1 行 此时无法更改数据库“DB”的状态或选项。该数据库处于单用户模式,当前有用户连接到该数据库。消息 5069,级别 16,状态 1,第 1 行 ALTER DATABASE 语句失败。
当我右键单击数据库以转到 ie 属性时,我得到了
Database "DB" is already open and can only have one user at a time.
有任何想法吗 ?
答案1
SELECT * from sys.databases
--> 从数据库中获取database_id。
SELECT * FROM MASTER..SysProcesses WHERE dbid = [thedbid]
(插入你的数据库 ID)
查找要杀死的 spid
KILL [theid]
答案2
用于SP_Who
查找与数据库的活动连接的会话 ID。
用于KILL <session id>
终止连接。
然后执行Alter Database
您尝试过的命令。
答案3
最糟糕的是,如果没有其他方法可行,您应该能够重新启动服务器以终止与数据库的任何连接,然后在重新启动后将其置于多用户模式。
答案4
当我尝试从单用户模式切换到离线模式时,我遇到了同样的问题。一个模糊的问题,以及一个(可能)模糊的解决方案:
运行下面的查询。它应该会给出“单个用户”错误。从 sys.SysProcesses 中选择 *
切换到“结果”窗格。找到列表中的最后一个 spid。
假设结果窗格中显示的最后一个 SPID 是 70。终止下一个 spid。KILL 71
这为我释放了连接。我猜 sys.sysprocesses 查询会返回结果,直到它遇到无法连接的数据库。