我们通过SQL Server 2014图形界面来部署一个扩展事件跟踪会话。然后可以生成SQL脚本。

步骤如下:

步骤1:

通过“对象资源管理器”连接到实例,展开“管理”、“扩展事件”、“会话”。

步骤2:

右键点击“会话”,创建一个新的会话向导。

步骤3:

输入会话名称“Deadlock_Monitor”,点击下一步。

步骤4:

选择不使用模板(像SQL Server Profiler模板一样,预设了一些默认选项一起启动,但没有一个满足我们需求的模板),点击下一步。

步骤5:

选择要捕获的事件,在“事件库”输入deadlock,可看到如下图所示:

步骤6:

选择“xml_deadlock_report”,添加到右侧选择的事件列表中。再单击下一步。

步骤7:

选择要捕获的列,这里我们选择下一步。

步骤8:

定义过滤条件,这里我们忽略这个设置,点击下一步。

步骤9:

选择保存数据到文件,设置文件路径和最大值等。点击下一步。

步骤10:

检查所有的配置,点击完成来安装和启用会话。

步骤11:

现在我们可以启动捕获,并查看活动数据。

步骤12:

在刚才创建会话“Deadlock_Monitor”上右键点击生成脚本。

CREATE EVENT SESSION [Deadlock_Monitor] ON SERVER

ADD EVENT sqlserver.xml_deadlock_report(

ACTION(sqlos.cpu_id,sqlos.system_thread_id,sqlos.task_time,sqlserver.client_connection_id,sqlserver.client_hostname,sqlserver.client_pid,sqlserver.database_name,sqlserver.request_id,sqlserver.server_instance_name,sqlserver.session_id,sqlserver.sql_text,sqlserver.username))

ADD TARGET package0.event_file(SET filename=N'D:\trace\扩展事件\Deadlock_Monitor.xel')

WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE,TRACK_CAUSALITY=OFF,STARTUP_STATE=OFF)

GO

 

步骤13:

在会话“Deadlock_Monitor”上右键选择启动会话。

步骤14:

分别在两个查询窗口执行如下语句。

--session1

USE AdventureWorks2012

BEGIN TRAN

UPDATE Person.Address SET AddressLine1 = 'New address' WHERE AddressID = 20

WAITFOR DELAY '0:0:10'

SELECT * FROM Person.Address WHERE AddressID = 25

--session2

USE AdventureWorks2012

BEGIN TRAN

UPDATE Person.Address SET AddressLine1 = 'New address' WHERE AddressID = 25

WAITFOR DELAY '0:0:10'

SELECT * FROM Person.Address WHERE AddressID = 20

步骤15:

在 “Deadlock_Monitor”上的package0.event_file上右键选择“查看目标数据…”。选择对应timestamp的死锁条目,在详细信息的xml_report值里显示的就是死锁的XML文件,可双击打开。点击“死锁”即可看到死锁的图形化展示。

深入进阶

死锁详细信息还有几个步骤可用来配置扩展事件来监控死锁。

我想去讨论另外两个事件来捕获到分析死锁更详细的信息。

1. Lock: Deadlock事件类

这个事件类可以用来验证死锁牺牲品。这个事件说明什么时候请求需要一个锁,但被取消作为一个死锁牺牲品。

2. Lock: Deadlock chain事件类

这个事件类用于监控死锁状态。当有一个死锁时该事件被触发。通过在实例级别监控这个事件,我们能够识别那些对象在死锁中,我们是否在应用程序中有死锁导致的性能问题。

步骤1:

在之前的“Deadlock_Monitor”会话上右键选择“属性”。选择“事件”页,将lock_deadlock和lock_deadlock_chain事件类添加到右侧已选择事件列表。

步骤2:

运行之前的死锁示例。

步骤3:

在“Deadlock_Monitor”上的package0.event_file上右键选择“查看目标数据…”。选择对应timestamp的死锁条目。

如果有用户反馈说他们在应用程序的错误日志里发现了输出了死锁信息,而且是在深夜。我们就可以知道怎么监控和获取死锁数据了。

使用SQL Server 扩展事件来创建死锁的跟踪的更多相关文章

  1. 使用SQL Server 扩展事件来创建死锁的时间跟踪

    我们通过SQL Server 2012图形界面来部署一个扩展事件跟踪会话.然后可以生成SQL脚本,在2008或2008 R2版本下运行类似的跟踪. 步骤1: 通过“Object Explorer”连接 ...

  2. SQL Server 扩展事件(Extented Events)从入门到进阶(2)——在GUI中创建基础扩展事件

    本文属于 SQL Server 扩展事件(Extented Events)从入门到进阶 系列 第一篇文章中提到了如何在Profiler中创建跟踪(trace),并以服务器端(server-side)跟 ...

  3. SQL Server扩展事件-- 使用system_health默认跟踪会话监控死锁

    SQL Server扩展事件(Extended Events)-- 使用system_health默认跟踪会话监控死锁 转自:http://blog.51cto.com/ultrasql/160037 ...

  4. SQL Server 扩展事件(Extented Events)从入门到进阶(4)——扩展事件引擎——基本概念

    本文属于 SQL Server 扩展事件(Extented Events)从入门到进阶 系列 在第一二节中,我们创建了一些简单的.类似典型SQL Trace的扩展事件会话.在此过程中,介绍了很多扩展事 ...

  5. SQL Server 扩展事件(Extented Events)从入门到进阶(1)——从SQL Trace到Extented Events

    由于工作需要,决定深入研究SQL Server的扩展事件(Extended Events/xEvents),经过资料搜索,发现国外大牛的系列文章,作为“学习”阶段,我先翻译这系列文章,后续在工作中的心 ...

  6. SQL Server 扩展事件

    SQL Server 扩展事件(Extended Event)是用于服务器的常规事件处理系统,是追踪SQL Server系统运行状态的神器,同时也是一个日志记录工具,扩展事件完全可以取代SQL追踪(S ...

  7. SQL Server 扩展事件(Extented Events)从入门到进阶(3)——通过界面操作Extented Event

    本文属于 SQL Server扩展事件(Extended Events)从入门到进阶 系列 对于接纳扩展事件,其中一个最大的障碍就是要对XML和XQuery有一定的了解以便分析数据.我们可以使用T-S ...

  8. SQL Server扩展事件的使用ring_buffer target时“丢失”事件的原因分析以及ring_buffer target潜在的问题

    事情起因: 排查SQL Server上的死锁问题,一开始想到的就是扩展事件, 第一种方案,开profile守株待兔吧,显得太low了,至于profile的变种trace吧,垂垂老矣,也一直没怎么用过. ...

  9. SQL Server扩展事件system_health会话总结

    system_health会话概念 我们知道扩展事件(Extended Events)是从SQL Server 2008开始引入的.system_health会话是SQL Server默认包含的扩展事 ...

随机推荐

  1. nginx+php7+mysql 在centos7.3下安装

    1.Nginx1.8.1   安装 1)安装 nginx 需要的扩展gcc,pcre-devel,zlib-devel, openssl openssl-devel yum -y install gc ...

  2. linux命令(10):ps命令

    1.查看mysql进程数: ps -ef | grep "mysql" | grep -v "grep" | wc –l 2.监控CPU状态:ps –au 3. ...

  3. http通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤

    http通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤: (1)    建立TCP连接 在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成 ...

  4. Simplify Path——简单经典的预处理

    Given an absolute path for a file (Unix-style), simplify it. For example,path = "/home/", ...

  5. bzoj 1449 费用流

    思路:先把没有进行的场次规定双方都为负,对于x胜y负 变为x + 1胜 y - 1 负所需要的代价为 2 * C[ i ] * x  - 2 * D[ i ] * y + C[ i ] + D[ i ...

  6. 洛谷——P2908 [USACO08OPEN]文字的力量Word Power

    P2908 [USACO08OPEN]文字的力量Word Power 题目描述 Farmer John wants to evaluate the quality of the names of hi ...

  7. Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals) Office Keys(思维)

    Office Keys time limit per test 2 seconds memory limit per test 256 megabytes input standard input o ...

  8. 第6天-javascript事件

    什么是事件 事件是用户在访问页面执行时的操作,也就是用户访问页面时的行为.当浏览器探测到一个事件时,比如鼠标点击或者按键.它可以触发与这个事件相关的JavaScript对象(函数),这些对象成为事件处 ...

  9. 【DP+树状数组】BZOJ1264-[AHOI2006]基因匹配Match

    [题目大意] 给定n个数和两个长度为n*5的序列,两个序列中的数均有1..n组成,且1..n中每个数恰好出现5次,求两个序列的LCS. [思路] 预处理每个数字在a[i]中出现的五个位置.f[i]示以 ...

  10. JDK源码学习笔记——HashMap

    Java集合的学习先理清数据结构: 一.属性 //哈希桶,存放链表. 长度是2的N次方,或者初始化时为0. transient Node<K,V>[] table; //最大容量 2的30 ...