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