【发布时间】:2009-08-18 15:31:46
【问题描述】:
我目前正在分离生产服务器上的开发数据库。由于这是生产服务器,我不想重新启动 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')
去
DECLARE @return_value int
执行@return_value = [dbo].[usp_KillUsers] @p_DBName = '数据库'
SELECT '返回值' = @return_value
去
ALTER DATABASE Database SET OFFLINE WITH ROLLBACK IMMEDIATE
去
【问题讨论】:
标签: tsql transactions locking msdtc