我有一个SQL Server 2005数据库,它保持锁定并且不会释放。我的应用程序无法提交对数据库的更新,因为有些任务正在等待处理并且我的应用程序不断崩溃。如果我查看活动监视器,等待任务会一直持续上升,直到我终止进程。问题是,我可以看到活动监视器中导致锁定的内容,但是我没有足够的信息,只是说会话ID阻止。
有没有办法使用TSQL来找出该过程究竟是什么以及它在做什么?即使用较长的等待时间查询数据库上的锁,以及如何强制它们释放或阻止它们?
答案 0 :(得分:0)
尝试sp_lock @ProcessID
然后选择排他锁(模式= X或IX)。然后,您可以使用SELECT object_name(id)
找出有问题的对象。该ID来自ObjId列。
答案 1 :(得分:0)
在Profiler中使用死锁图事件:请参阅Track Down Deadlocks Using SQL Server 2005 Profiler