使用SQL Server 扩展事件来创建死锁的时间跟踪
我们通过SQL Server 2012图形界面来部署一个扩展事件跟踪会话。然后可以生成SQL脚本,在2008或2008 R2版本下运行类似的跟踪。
步骤1:
通过“Object Explorer”连接到实例,展开“Management”、“Extended Events”、“Sessions”。

步骤2:
右键点击“Sessions”,创建一个新的会话向导。
步骤3:
输入会话名称“Deadlock_Monitor”,点击下一步。

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

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

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

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

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

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

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

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

步骤12:
在刚才创建会话“Deadlock_Monitor”上右键点击生成脚本。
|
1
2
3
4
5
|
CREATE EVENT SESSION [Deadlock_Monitor] ON SERVERADD EVENT sqlserver.xml_deadlock_reportADD TARGET package0.event_file(SET filename=N'D:\MSSQL\DATA\MSSQL11.MSSQLSERVER\MSSQL\Log\Deadlock_Monitor.xel',max_file_size=(256),max_rollover_files=(10))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:
分别在两个查询窗口执行如下语句。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
--Window1USE AdventureWorks2012BEGIN TRANUPDATE Person.Address SET AddressLine1 = 'New address' WHERE AddressID = 20WAITFOR DELAY '0:0:10'SELECT * FROM Person.Address WHERE AddressID = 25 --Window 2USE AdventureWorks2012BEGIN TRANUPDATE Person.Address SET AddressLine1 = 'New address' WHERE AddressID = 25WAITFOR DELAY '0:0:10'SELECT * FROM Person.Address WHERE AddressID = 20 |
步骤15:
在 “Deadlock_Monitor”上的package0.event_file上右键选择“View Target Data…”。选择对应timestamp的死锁条目,在Details的xml_report值里显示的就是死锁的XML文件,可双击打开。点击 Deadlock即可看到死锁的图形化展示。



深入进阶
死锁详细信息还有几个步骤可用来配置扩展事件来监控死锁。
我想去讨论另外两个事件来捕获到分析死锁更详细的信息。
1. Lock: Deadlock事件类
这个事件类可以用来验证死锁牺牲品。这个事件说明什么时候请求需要一个锁,但被取消作为一个死锁牺牲品。
2. Lock: Deadlock chain事件类
这个事件类用于监控死锁状态。当有一个死锁时该事件被触发。通过在实例级别监控这个事件,我们能够识别那些对象在死锁中,我们是否在应用程序中有死锁导致的性能问题。
步骤1:
在之前的“Deadlock_Monitor”会话上右键选择“Properties”。选择“Events”页,将lock_deadlock和lock_deadlock_chain事件类添加到右侧已选择事件列表。

步骤2:
运行之前的死锁示例。
步骤3:
在“Deadlock_Monitor”上的package0.event_file上右键选择“View Target Data…”。选择对应timestamp的死锁条目。


如果有用户反馈说他们在应用程序的错误日志里发现了输出了死锁信息,而且是在深夜。我们就可以知道怎么监控和获取死锁数据了。
使用SQL Server 扩展事件来创建死锁的时间跟踪的更多相关文章
- 使用SQL Server 扩展事件来创建死锁的跟踪
我们通过SQL Server 2014图形界面来部署一个扩展事件跟踪会话.然后可以生成SQL脚本. 步骤如下: 步骤1: 通过“对象资源管理器”连接到实例,展开“管理”.“扩展事件”.“会话”. 步骤 ...
- SQL Server 扩展事件(Extented Events)从入门到进阶(2)——在GUI中创建基础扩展事件
本文属于 SQL Server 扩展事件(Extented Events)从入门到进阶 系列 第一篇文章中提到了如何在Profiler中创建跟踪(trace),并以服务器端(server-side)跟 ...
- SQL Server扩展事件-- 使用system_health默认跟踪会话监控死锁
SQL Server扩展事件(Extended Events)-- 使用system_health默认跟踪会话监控死锁 转自:http://blog.51cto.com/ultrasql/160037 ...
- SQL Server 扩展事件(Extented Events)从入门到进阶(4)——扩展事件引擎——基本概念
本文属于 SQL Server 扩展事件(Extented Events)从入门到进阶 系列 在第一二节中,我们创建了一些简单的.类似典型SQL Trace的扩展事件会话.在此过程中,介绍了很多扩展事 ...
- SQL Server 扩展事件(Extented Events)从入门到进阶(1)——从SQL Trace到Extented Events
由于工作需要,决定深入研究SQL Server的扩展事件(Extended Events/xEvents),经过资料搜索,发现国外大牛的系列文章,作为“学习”阶段,我先翻译这系列文章,后续在工作中的心 ...
- SQL Server 扩展事件
SQL Server 扩展事件(Extended Event)是用于服务器的常规事件处理系统,是追踪SQL Server系统运行状态的神器,同时也是一个日志记录工具,扩展事件完全可以取代SQL追踪(S ...
- SQL Server 扩展事件(Extented Events)从入门到进阶(3)——通过界面操作Extented Event
本文属于 SQL Server扩展事件(Extended Events)从入门到进阶 系列 对于接纳扩展事件,其中一个最大的障碍就是要对XML和XQuery有一定的了解以便分析数据.我们可以使用T-S ...
- SQL Server扩展事件的使用ring_buffer target时“丢失”事件的原因分析以及ring_buffer target潜在的问题
事情起因: 排查SQL Server上的死锁问题,一开始想到的就是扩展事件, 第一种方案,开profile守株待兔吧,显得太low了,至于profile的变种trace吧,垂垂老矣,也一直没怎么用过. ...
- SQL Server扩展事件system_health会话总结
system_health会话概念 我们知道扩展事件(Extended Events)是从SQL Server 2008开始引入的.system_health会话是SQL Server默认包含的扩展事 ...
随机推荐
- iOS 如何在整个屏幕中都能实现滑动返回的效果
- (void)setupGetsInNav { UIGestureRecognizer *gesture = self.interactivePopGestureRecognizer; gestur ...
- html5 meta(移动端)介绍及使用
随着高端手机(Andriod,Iphone,Ipod,WinPhone等)的盛行,移动互联应用开发也越来越受到人们的重视,用html5开发移动应用是最好的选择.然而,每一款手机有不同的分辨率,不同屏幕 ...
- 原创:跳坑指南——微信小程序真机预览跟本地不同的问题
微信小程序中出现最多的一个问题,就是真机跟本地不同:我简单列举一些我发现的原因,给大家参考,大家也可以把自己发现的东西回复给我,给我参考:本地看不到数据,就先让本地能看到数据,再看本帖.... 1:本 ...
- Kooboo CMS - Html.FrontHtml[Helper.cs] 各个方法详解
下面罗列了方法详解,每一个方法一篇文章. Kooboo CMS - @Html.FrontHtml().HtmlTitle() 详解 Kooboo CMS - Html.FrontHtml.Posit ...
- JavaScript中的数据类型转换
本文中提到的“原始值”指的是undefined,null,Boolean,string和number. 本文中的对象是native对象,宿主对象(浏览器定义的对象)按照各自的算法转换. JavaScr ...
- SQL Server安全(11/11):审核(Auditing)
在保密你的服务器和数据,防备当前复杂的攻击,SQL Server有你需要的一切.但在你能有效使用这些安全功能前,你需要理解你面对的威胁和一些基本的安全概念.这篇文章提供了基础,因此你可以对SQL Se ...
- JConsole远程连接配置
JConsole远程连接还是有一点坑的.这里记录一下配置过程,好记性不如烂笔头. 1.在远程机的tomcat的catalina.sh中加入配置: JAVA_OPTS="$JAVA_OPTS ...
- Spring Scope:Web项目中如何安全使用有状态的Bean对象?
Web系统是最常见的Java应用系统之一,现在流行的Web项目多使用ssm或ssh框架,使用spring进行bean的管理,这为我们编写web项目带来了很多方便,通常,我们的controler层使用注 ...
- C# 关键字extern用法
修饰符用于声明在外部实现的方法.extern 修饰符的常见用法是在使用 Interop 服务调入非 托管代码时与 DllImport 属性一起使用:在这种情况下,该方法还必须声明为 static,如下 ...
- Xamarin Studio在Mac环境下的配置和Xamarin.iOS常用控件的示例
看过好多帖子都是Win环境装XS,Mac只是个模拟器,讲解在Mac环境下如何配置Xamarin Studio很少,也是一点点找资料,东拼西凑才把Xamarin Studio装在Mac上跑起来,如下: ...