天天看點

SqlServer資料庫死鎖排查方法

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日志

SqlServer資料庫死鎖排查方法

a、b兩個方法都是檢視的同一份日志,任選其一即可。

日志中的關鍵字 dead  、 victim 

2. exec p_lockinfo 0

p_lockinfo 為根據資料庫自帶的資訊表,組織的存儲過程

3. SqlProfiler

用sqlserver 自帶的工具sqlprofiler 跟蹤SqlServer語句執行過程,選用DeadLock模闆進行跟蹤;

如果發現死鎖,SqlProfiler會給出詳細的語句,以及死鎖的資源,是分析和解決死鎖利器!

SqlServer資料庫死鎖排查方法

附相關學習文檔連結

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