Lock:Deadlock 事件类

尝试获取锁的操作由于属于死锁的一部分并被选为死锁受害者而被取消,此时将生成事件类别为 Lock:Deadlock 的事件。

使用 Lock:Deadlock 事件类监视死锁何时发生以及涉及哪些对象。 可以使用此信息来确定死锁是否显著影响应用程序的性能。 然后,可以检查应用程序代码,以确定是否可以进行更改以最大程度地减少死锁。

Lock:Deadlock 事件类数据列

数据列名称 数据类型 DESCRIPTION 列 ID 可筛选
应用程序名称 nvarchar 创建到 SQL Server 实例连接的客户端应用程序的名称。 此列由应用程序传递的值填充,而不是由所显示的程序名填充。 10 是的
BinaryData image 锁定资源标识符。 2 是的
ClientProcessID int 主机为运行该客户端应用程序的进程分配的 ID。 如果客户端提供了客户端进程 ID,则填充此数据列。 9 是的
数据库ID int 获取锁的数据库 ID。 如果在跟踪中捕获 ServerName 数据列且服务器可用,SQL Server Profiler 将显示数据库名称。 可使用 DB_ID 函数来确定数据库的值。 3 是的
数据库名称 nvarchar 获取锁的数据库名称。 35 是的
持续时间 bigint 发出锁请求的时间与发生死锁的时间之间的时间(以微秒为单位)。 13 是的
结束时间 datetime 死锁结束的时间。 15 是的
EventClass int 事件类型 = 25。 二十七
事件序列 int 请求中给定事件的序列。 51
群组ID int 在其中激发 SQL 跟踪事件的工作负荷组的 ID。 66 是的
主机名称 nvarchar 正在运行客户端的计算机的名称。 如果客户端提供了主机名,则填充此数据列。 若要确定主机名,请使用 HOST_NAME 函数。 8 是的
整数数据 int 死锁编号。 从服务器启动时开始,分配从0开始的数字,每发生一次死锁,数字便递增。 二十五 是的
整数数据2 int 标识为仅供参考。 不支持。 不保证以后的兼容性。 55 是的
IsSystem int 指示事件是发生在系统进程中还是发生在用户进程中。 1 = 系统,0 = 用户。 六十 是的
登录名 nvarchar 用户的登录名(SQL Server 安全登录名或域\用户名形式的Microsoft Windows 登录凭据)。 11 是的
LoginSid image 登录用户的安全标识号 (SID)。 您可以在 sys.server_principals 目录视图中找到此信息。 服务器中的每个登录名都具有唯一的 SID。 41 是的
模式 int 死锁后生成的模式。

0=NULL - 与所有其他锁模式兼容(LCK_M_NL)

1=架构稳定性锁 (LCK_M_SCH_S)

2=架构修改锁 (LCK_M_SCH_M)

3=共享锁 (LCK_M_S)

4=更新锁 (LCK_M_U)

5=排他锁 (LCK_M_X)

6=意向共享锁 (LCK_M_IS)

7=意向更新锁 (LCK_M_IU)

8=意向排他锁 (LCK_M_IX)

9=共享以更新(LCK_M_SIU)

10=与意向独占共享 (LCK_M_SIX)

11=通过意向独占进行更新(LCK_M_UIX)

12=批量更新锁(LCK_M_BU)

13=密钥范围共享/共享(LCK_M_RS_S)

14=密钥范围共享/更新(LCK_M_RS_U)

15=键范围插入 NULL (LCK_M_RI_NL)

16=键范围插入共享 (LCK_M_RI_S)

17=关键范围插入更新(LCK_M_RI_U)

18=键范围插入独占 (LCK_M_RI_X)

19=密钥范围独占共享 (LCK_M_RX_S)

20=密钥范围独占更新 (LCK_M_RX_U)

21=键范围独占 (LCK_M_RX_X)
32 是的
NT域名名称 nvarchar 用户所属的 Windows 域。 7 是的
NT用户名 (NTUserName) nvarchar Windows 用户名。 6 是的
ObjectID(对象标识符) int 争用中对象的 ID(如果可用且适用)。 22 是的
ObjectID2 bigint 相关对象或实体的 ID(如果可用且适用)。 56 是的
所有者ID int 1=交易

2=光标

3=会话

4=共享事务工作空间

5=独占事务工作区
58 是的
RequestID int 请求中包含语句的 ID。 49 是的
服务器名称 nvarchar 要跟踪的 SQL Server 实例的名称。 26
SessionLoginName nvarchar 发起会话的用户的登录名。 例如,如果使用 Login1 连接到 SQL Server,并将语句作为 Login2 执行,SessionLoginName 将显示 Login1,LoginName 显示 Login2。 此列同时显示 SQL Server 和 Windows 登录名。 64 是的
意大利公共数字身份系统 (SPID) int 该事件发生的会话 ID。 12 是的
开始时间 datetime 事件开始的时间(如果可用)。 14 是的
TextData ntext 与所获取的锁类型相关的文本值。 1 是的
TransactionID bigint 系统分配的事务 ID。 4 是的
类型 int 1=空资源

2=数据库

3=文件

5=对象

6=页

7=关键

8=程度

9=RID

10=应用程序

11=METADATA

12=AUTONAMEDB

13=HOBT

14=分配单元
57 是的

另请参阅

sp_trace_setevent(Transact-SQL)
sys.dm_tran_locks(Transact-SQL)