1. 開啟資料庫死鎖日志功能
1.1 在SQLSERVER企業管理器裡執行下面 a 指令,開啟死鎖日志
--a. 開啟跟蹤死鎖
DBCC TRACEON(3605,1204,1222,-1)
--b. 關閉信号跟蹤
DBCC TRACEOFF(1222,-1)
DBCC TRACEOFF(1204,-1)
--c. 檢視信号跟蹤是否開啟。
DBCC TRACESTATUS(1204,-1)
DBCC TRACESTATUS(1222,-1)
1.2 執行指令後,如果發生死鎖,可以在資料庫日志 或者資料庫自帶的報表上查詢死鎖日志
a. 在資料庫安裝目錄下找到日志進行分析
errorlog-> deadlock
b.直接通過企業管理器查詢SqlServer日志
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs4WNXl1M5EjY0ljVkBXNywEMW1mY1RzRapnTtxkb5ckYplTeMZTTINGMShUYfRHelRHLwEzX39GZhh2css2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xyayFWbyVGdhd3LcV2Zh1Wa9M3clN2byBXLzN3btg3Pn5GcuQjM2ITM1MTM4AzNwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
a、b兩個方法都是檢視的同一份日志,任選其一即可。
日志中的關鍵字 dead 、 victim
2. exec p_lockinfo 0
p_lockinfo 為根據資料庫自帶的資訊表,組織的存儲過程
3. SqlProfiler
用sqlserver 自帶的工具sqlprofiler 跟蹤SqlServer語句執行過程,選用DeadLock模闆進行跟蹤;
如果發現死鎖,SqlProfiler會給出詳細的語句,以及死鎖的資源,是分析和解決死鎖利器!
附相關學習文檔連結
https://blog.csdn.net/weixin_42579642/article/details/84136322
https://www.cnblogs.com/iamconan/p/7383529.html
https://blog.csdn.net/danfeixia/article/details/40127841
https://www.cnblogs.com/rush/archive/2012/02/19/2358209.html
https://docs.microsoft.com/zh-cn/sql/relational-databases/system-stored-procedures/sp-lock-transact-sql?redirectedfrom=MSDN&view=sql-server-ver15