我有一個SQL Server 2005數據庫保持鎖定,不會釋放。我的應用程序無法將更新提交到數據庫,因爲有些任務正在等待處理,並且我的應用程序不斷崩潰。如果我看看活動監視器,等待任務只會持續上升直到我終止進程。問題是我可以看到導致鎖定的活動監視器中有什麼,但我沒有足夠的信息說它只是說會話ID被阻止。SQL Server數據庫保持鎖定
有沒有什麼方法可以通過使用TSQL來找出那個過程是什麼以及它在做什麼?即查詢具有較長等待時間的數據庫上的鎖以及如何強制它們釋放或防止它們?
我有一個SQL Server 2005數據庫保持鎖定,不會釋放。我的應用程序無法將更新提交到數據庫,因爲有些任務正在等待處理,並且我的應用程序不斷崩潰。如果我看看活動監視器,等待任務只會持續上升直到我終止進程。問題是我可以看到導致鎖定的活動監視器中有什麼,但我沒有足夠的信息說它只是說會話ID被阻止。SQL Server數據庫保持鎖定
有沒有什麼方法可以通過使用TSQL來找出那個過程是什麼以及它在做什麼?即查詢具有較長等待時間的數據庫上的鎖以及如何強制它們釋放或防止它們?
嘗試sp_lock @ProcessID
然後挑選排他鎖(mode = X或IX)。然後您可以使用SELECT object_name(id)
找出違規物品。該ID是從ObjId列中獲取的。
使用Profiler中的Deadlock Graph事件:請參見Track Down Deadlocks Using SQL Server 2005 Profiler