一個SQL Server 2008 R2 死鎖的問題解決


問題場景:在客戶那碰到一個操作卡死的現象

問題解決:

1、如何掛鈎是死鎖問題:通過代碼跟蹤,發現是指執行一個SQL語句超時,因此猜想可能是表鎖住了

2、如果確認是思索問題:通過SQL發現死鎖,以下是相關的SQL

 select request_session_id SPID,OBJECT_NAME(resource_associated_entity_id) TABLENAME from sys.dm_tran_locks where resource_type='OBJECT'
上面這個SQL是查詢當前數據庫中有哪些死鎖, SPID 為進程ID ,TABLENAME 為表名
PS:百度的時候有看到用SQL跟蹤器(SQL SERVER Profiler)可以跟蹤出死鎖

DBCC INPUTBUFFER(SPID)
根據進程ID找到對應的SQL,有了SQL就能確認代碼位置了
 
 
3、解決方式:更改數據庫事務隔離級別
alter database ng0001 set read_committed_snapshot on with rollback immediate
 
4、總結:這次問題由於比較急加上是晚上加班,所以沒有具體查看鎖的類別和原來數據庫的事務隔離級別,對SQL Server鎖和事務隔離級別這2個知識點還需要多加了解


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM