sql server数据库死锁检查分析

发布时间:2019-10-18编辑:脚本学堂
有关sql server数据库死锁检查的方法,把死锁记录到Errorlog中的方法,可以查看数据库的例行日志,每隔一段时间,数据库都会检查死锁,感兴趣的朋友参考下。

sql server数据库死锁检查方法 >> sql数据库死锁怎么检测_sql数据库死锁检测语句

TRACEON函数的第三个参数设置为-1,表示不单单针对当前connection,而是针对所有包括未来建立的connection。
否则只是监视当前已经建立的数据库连接了。

把死锁记录到Errorlog中:
 

复制代码 代码示例:
dbcc traceon (1204, 3605, -1)
go
dbcc tracestatus(-1)
go

输出结果:
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
TraceFlag Status
--------- ------
1204      1
1205      1
3605      1
(所影响的行数为 3 行)
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

可以查看数据库的例行日志,每隔一段时间,数据库都会检查死锁,日志文本如下所示:
 

复制代码 代码示例:
2004-01-16 18:34:38.50 spid4     ----------------------------------
2004-01-16 18:34:38.50 spid4     Starting deadlock search 1976
2004-01-16 18:34:38.50 spid4     Target Resource Owner:
2004-01-16 18:34:38.50 spid4      ResType:LockOwner Stype:'OR' Mode: U SPID:55 ECID:0 Ec:(0xAA577570) Value:0x4c25cba0
2004-01-16 18:34:38.50 spid4      Node:1  ResType:LockOwner Stype:'OR' Mode: U SPID:55 ECID:0 Ec:(0xAA577570) Value:0x4c25cba0
2004-01-16 18:34:38.50 spid4      Node:2  ResType:LockOwner Stype:'OR' Mode: U SPID:71 ECID:0 Ec:(0xABF07570) Value:0x9bd0ba00
2004-01-16 18:34:38.50 spid4    
2004-01-16 18:34:38.50 spid4     -- next branch --
2004-01-16 18:34:38.50 spid4      Node:2  ResType:LockOwner Stype:'OR' Mode: U SPID:71 ECID:0 Ec:(0xABF07570) Value:0x9bd0ba00
2004-01-16 18:34:38.50 spid4    
2004-01-16 18:34:38.50 spid4    
2004-01-16 18:34:38.50 spid4     End deadlock search 1976 ... a deadlock was not found.
2004-01-16 18:34:38.50 spid4     ----------------------------------

附录:
DBCC TRACEON
打开(启用)指定的跟踪标记。

注释
跟踪标记用于自定义某些控制 Microsoft? SQL Server? 操作方式的特性。跟踪标记在服务器中一直保持启用状态,直到通过执行 DBCC TRACEOFF 语句对其禁用为止。
在发出 DBCC TRACEON语句之前,连入到服务器的新连接看不到任何跟踪标记。
一旦发出该语句,该连接就能看到服务器中当前启用的所有跟踪标记(即使这些标记是由其它连接启用)。

跟踪标记
跟踪标记用于临时设置服务器的特定特征或关闭特定行为。
如果启动 Microsoft? SQL Server时设置了跟踪标记 3205,将禁用磁带驱动程序的硬件压缩。跟踪标记经常用于诊断性能问题,或调试存储过程或复杂的计算机系统。

下列跟踪标记在 SQL Server 中可用。
跟踪标记  描述
1204 返回参与死锁的锁的类型以及当前受影响的命令。

实际上可以在“错误 1000 -1999”中找到:
1204 19 SQL Server 此时无法获取 LOCK 资源。请在活动用户数较少时重新运行您的语句,或者请求系统管理员检查 SQL Server 锁和内存配置。
1205 13 事务(进程 ID %1!)与另一个进程已被死锁在资源 {%2!} 上,且该事务已被选作死锁牺牲品。请重新运行该事务。
1206 18 事务管理器已取消了分布式事务。