我有一个SQL Server2005数据库,它一直处于锁定状态,并且不会释放。我的应用程序无法将更新提交到数据库,因为有任务正在等待处理,而我的应用程序一直崩溃。如果我查看活动监视器,等待的任务就会不断增加,直到我终止进程。问题是,我可以看到活动监视器中导致锁定的是什么,但我没有足够的信息,它只显示被会话ID阻塞。
有没有办法通过使用TSQL来找出这个进程到底是什么,它在做什么?即查询等待时间较长的数据库锁,如何强制释放或防止锁释放?
发布于 2010-10-12 17:55:46
尝试sp_lock @ProcessID,然后选择排它锁(模式=X或IX)。然后,您可以使用SELECT object_name(id)找出违规对象。ID是从ObjId列中获取的。
发布于 2010-10-12 17:58:40
在事件探查器中使用死锁图形事件:请参见Track Down Deadlocks Using SQL Server 2005 Profiler
https://stackoverflow.com/questions/3913373
复制相似问题