SQLServer 如何收集資料以排除 SQL 死鎖問題

abce發表於2024-09-06

方案一

使用 SQL Profiler 跟蹤工具捕獲死鎖資料:

1.登入 SQL Server Management Studio
2.單擊工具、SQL Server Profiler,然後進行身份驗證
3.單擊"事件選擇"選項。
4.取消選擇所有選項。
5.單擊以下兩個選項:
·顯示所有列
·顯示所有事件框
6.展開鎖。
7.選擇以下內容:
·死鎖圖
·鎖: 死鎖
·鎖: 死鎖鏈
8.單擊執行,等待出現的死鎖。
9.單擊停止。
10.單擊檔案,另存為,跟蹤檔案。
11.選擇位置並儲存檔案。

方案二

使用trace標誌和 SQL 錯誤日誌捕獲死鎖資料。

開啟trace標誌

開啟trace標誌有兩種方法:

要在 SQL 日誌中捕獲死鎖資訊,必須啟用trace標誌 1204、1222 和 3605。在收集日誌之前,必須先開啟這些標記。

在 SQL Management Studio 中執行下面的查詢,確認它們是否為 ON = 1 或 OFF = 0:

DBCC TRACESTATUS (1204, 1222, 3605)

預設是關閉的。

可以透過以下的方式開啟這些標誌。

(1)臨時開啟

登入 SQL Server Management Studio,開啟一個查詢視窗。選擇什麼資料庫並不重要。

要開啟死鎖跟蹤標誌,請執行以下查詢:

dbcc traceon (1204,1222,3605,-1)

然後等待死鎖發生,然後檢視錯誤日誌中的死鎖資訊。

要想關閉該trace標誌,使用以下命令即可:

DBCC TRACK OFF (1204,1222,3605,-1)

sqlserver服務重啟後,也會關閉trace標誌。

(2)持久開啟

將它們新增到 SQL Server 的啟動引數中,即使重啟 SQL Server,SQL 死鎖跟蹤也會保持開啟。

登入作業系統,開啟 SQL Server 配置管理器( SQL Server Configuration Manager)。

點選SQL Server Services。右擊SQL Server (instance_name),選中屬性,在啟動引數中配置(Startup Parameters )。

輸入"-T3605",然後點選"新增"按鈕。重複上面的操作,新增"-T1204"和"-T1222"

最後,點選"應用"。

配置結束後,需要重啟sqlserver服務,方可生效。

捕獲錯誤日誌

開啟錯誤標誌後,就可以捕獲錯誤日誌了,也有兩種方法來捕獲。根據問題發生的頻率,可能需要等待一段時間才會出現更多死鎖錯誤,並出現在 SQL 錯誤日誌中。

(1)透過 SQL Server Management Studio控制檯捕獲

·登入 SQL Server Management Studio。

·開啟管理、SQL Server 日誌。

雙擊當前。如果需要過去日期的日誌,請雙擊相應日期。

也可以選擇匯出。

(2)在磁碟上查詢檔案

SQL 錯誤日誌的確切位置是可配置的,因 SQL 例項而異。

·登入到伺服器,開啟 SQL Server 配置管理器。

·單擊 SQL Server Services。

·右鍵單擊 SQL Server(instance_name),然後選擇 Properties(屬性)。

·單擊 “啟動引數 ”選項卡。

·在"現有引數"欄位中查詢與 SQL 錯誤日誌位置相對應的行。

例如:

-eC:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\Log\ERRORLOG

相關文章