監視 SQL Server 2014 中的死鎖
我們在 SQL Server 2014 上遇到了死鎖,我正在嘗試盡可能多地擷取有關它們的資訊。
已經有擷取 xml_deadlock_report 事件的擴展事件會話,我可以在 SSMS 中看到死鎖圖。
目前,此 SQL Server 上沒有啟用任何跟踪標誌。啟用標誌 1204 和 1222 是否有助於擷取任何其他資訊?似乎這些標誌不適用於擴展事件,但我不確定 100%。
添加跟踪標誌 1204 和 1222 不會幫助您擷取 SQL Server 2014 版中的任何其他資訊。
我還在推特上用#sqlhelp 話題標籤問了這個問題,是否有人能想到任何理由在 XE 跟踪上使用跟踪標誌。我收到的答案是,擴展事件優於使用跟踪標誌。您應該只將 Trace Flag 用於遺留目的。
如果你有死鎖圖 - 你有很多資訊。閱讀死鎖圖需要更多技巧。但別太多。該圖向您展示了什麼是死鎖。這有點像當兩輛車在一個點上,他們每個人都需要過馬路才能在完全相同的位置進入街對面的停車場。假設他們每個人都想左轉。A 車不能左轉,因為 B 車擋道。B 車不能左轉,因為 A 車擋道。
SQL Server 只是為您炸毀其中一輛車,而不是稍微移動其中一輛車或繞過另一輛車。
但我離題了。死鎖圖資訊和死鎖報告中的其餘資訊將向您顯示每個會話鎖定了哪個對像以及鎖定的類型 - 以及另一個想要的鎖定。
您可能會看到一些查詢資訊,可能不取決於一些事情。但是,如果您可以重新創建這種情況,您可以從擴展的事件會話或監視傳入查詢的第三方工具中擷取一些查詢資訊 - Sentry One、Idera DM 或 Solar Winds DPA 等工具都應該在查詢發生時向您顯示查詢- 大多數都有免費試用期。Sentry 甚至有自己的死鎖圖,我相信其他人也有,但不確定。