[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。