我们试图恢复一个数据库,并由于某种原因失败。 现在它陷入了单用户模式。 这是我试过的:
select d.name, d.dbid, spid, login_time, nt_domain, nt_username, loginame from sysprocesses p inner join sysdatabases d on p.dbid = d.dbid where d.name = 'mydb'
它返回了一个结果,我用kill 77杀死了它。 我读了一个地方,你也应该杀了身份证加一个好的措施,所以我们也跑了kill 78 。 此时,再次运行查询返回了0个连接。
我已经尝试了所有这些:
exec sp_dboption 'mydb', 'single user', 'FALSE'; SET DEADLOCK_PRIORITY HIGH exec sp_dboption 'mydb', 'single user', 'FALSE'; ALTER DATABASE [mydb] SET MULTI_USER WITH NO_WAIT ALTER DATABASE [mydb] SET MULTI_USER WITH ROLLBACK IMMEDIATE
他们都给我
Msg 5064,Level 16,State 1,Line 1
目前无法更改数据库“mydb”的状态或选项。 数据库处于单用户模式,并且当前正在连接一个用户。
我意识到我可以通过重新启动sql服务或者重新启动服务器来解决这个问题。 但是,这是一个生产服务器,所以我宁愿避免它。
有什么build议么?
快速浏览一下SPID
USE master EXEC sp_who
从那里解出数据库并杀死相应的锁。
从单一用户模式切换到多用户模式
ALTER DATABASE'DB NAME'SET MULTI_USER WITH ROLLBACK IMMEDIATE