我目前正在分离生产服务器上的开发数据库。由于这是生产服务器,我不想重新启动 sql 服务。那是最坏的情况。
显然,我尝试通过 SSMS 将其分离。告诉我有一个活动连接,我断开了它。第二次分离时,它告诉我这是不可能的,因为它正在使用中。
我尝试了 EXEC sp_detach_db
'DB',但没有成功。
我尝试让数据库脱机。当我感到无聊并将其关闭时,它运行了大约 15 分钟。
无论如何,我尝试了一切......我确保使用 SSMS 分离数据库中的连接指示器杀死所有连接。
以下返回 0 个结果:
使用主 SELECT * FROM sys.sysprocesses WHERE dbid = DB_ID('DB')
以下内容现在运行了 18 分钟:
ALTER DATABASE DB SET OFFLINE WITH ROLLBACK IMMEDIATE
在所有这些过程中,我确实定期重新启动 SMSS,以确保 SSMS 不是通过隐形锁定某些东西的罪魁祸首。
没有办法暴力破解吗?数据库模式是我非常喜欢的东西,但数据是可消耗的。
希望有某种快速修复?:)
DBA 今晚将尝试重置该过程,但我想知道解决方法以防万一。
谢谢!
ps:我正在使用DTC ...所以也许这可以解释为什么我的数据库突然被锁定了?
编辑:
我现在正在执行以下操作,这会导致最后一部分无限执行。第一个查询甚至返回 0,所以我想杀死用户甚至都不重要。
使用 [主] 去
SELECT * FROM sys.sysprocesses WHERE dbid = DB_ID('Database')
去
声明 @return_value int
EXEC @return_value = [dbo].[usp_KillUsers] @p_DBName = '数据库'
选择“返回值”=@return_value
去
ALTER DATABASE Database SET OFFLINE WITH ROLLBACK IMMEDIATE
去