[SQL]SQL Server 2008使用Extended Events SSMS Addin + Performance Dashboard Reports來監看系統

[SQL]SQL Server 2008使用Extended Events SSMS Addin + Performance Dashboard Reports來監看系統

有時會看到SQL發生了deadlock,這時如果沒有即時使用SQL Profiler去錄下來的話,就不知到底是什麼原因發生了deadlock。

這時透過Extended Events來檢視來查看,所以可以到「SQL Server 2008 Extended Events SSMS Addin」安裝SSMS的Addin(SQL 2012已內建)。

安裝完後,開啟SSMS就會看到Extended Events Information的視窗。如果沒有可以從Menu檢視->Show Extended Event Session Explorer來顯示出來。如下圖,

image

 

可以從system_health的Events中可看到要監看的Event,其中xml_deadlock_report就是監看deadlock,所以我們使用2個connection來建立deadlock的情況,SQL如下,


--新增查詢
--SESSION 1:
USE tempdb;
GO

CREATE TABLE T1
(C1 INT)

CREATE TABLE T2
(C1 INT)

INSERT INTO T1 VALUES(1)
INSERT INTO T2 VALUES(1)


BEGIN TRAN
UPDATE T1 SET C1 = 2 WHERE C1 = 1

--新增查詢
--SESSION 2:
BEGIN TRAN
UPDATE T2 SET C1 = 3 WHERE C1 = 1
UPDATE T1 SET C1 = 3 WHERE C1 = 1
COMMIT

--回到SESSION 1
--SESSION 1:
UPDATE T2 SET C1 = 2 WHERE C1 = 1
COMMIT

 

 

 

然後Deadlock就發生了!

image

 

再來檢視ring_buffer的資訊,如下可看到發生Deadlock的語法,及造成Deadlock的相關訊息。

image

 

另外,如果說要看即時的效能Report的話,可安裝「SQL Server 2005 Performance Dashboard Reports」然後修改setup.sql中cpu_ticks_in_ms改成ms_ticks。

詳細資訊可參考保哥的「如何在 SQL 2008 安裝 Performance Dashboard Reports」文章,寫的很詳細哦!

可看到即時被Block的資訊,如下圖所示,

image

image

SQL 2012的Performance請從以下位置Download。
Microsoft® SQL Server® 2012 Performance Dashboard Reports


安裝完成後,您可以到安裝的目錄將performance_dashboard_main.rdl改成您能區別的檔名,
如我的機器上就裝了SQL 2005 & SQL 2012的Performance Dashboard Reports,所以會將2005的performance_dashboard_main.rdl改成performance_dashboard_2005.rdl。
而SQL 2012的就改成performance_dashboard_2012.rdl,這樣就能針對不同版本的SQL開啟Report。

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^