启动SQLServer的死锁检查

原创 2005年03月01日 11:42:00

对于数据库死锁,通常可以通过TRACE FLAG 120412051206,检查ERRORLOG里面的输出,和分析SQLTRACE的执行上下文判断死锁问题的来由。

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

事务管理器已取消了分布式事务。

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

教您如何检查oracle死锁

  • 2012-01-06 20:38
  • 108KB
  • 下载

sqlserver 解除死锁

进程的死锁及其预防,检查,恢复

转自:http://www.mmrtvu.gd.cn/grzy/os/jiaoxue/jiaocai801.htm#jiaocai81 一、要点提示 (1) 掌握死锁的概念和产生死锁的根本原因...

SQL Server 检查死锁

找出什么被锁定了 系统的反应迟缓意味着你应该做一些调查了。你的查找最好从测定系统发生锁定的数量和频率开始。如果你的系统环境处理事务性很高的话,这样各个应用程序争夺资源就会很常见,从而引起锁定。解决这...

用 sys.sysprocesses 检查 Sql Server的阻塞和死锁

Sys.SysProcesses 系统表是一个很重要的系统视图,主要用来定位与解决Sql Server的阻塞和死锁。 MSDN:包含正在 SQL Server 实例上运行的进程的相关信息。这...
  • wxzyq
  • wxzyq
  • 2011-11-13 10:24
  • 526

关于数据库死锁的检查方法

关于数据库死锁的检查方法 一、        数据库死锁的现象 程序在执行的过程中,点击确定或保存按钮,程序没有响应,也没有出现报错。 二、       ...

关于数据库死锁的检查方法

关于数据库死锁的检查方法 一、         数据库死锁的现象 程序在执行的过程中,点击确定或保存按钮,程序没有响应,也没有出现报错。 二、      ...

死锁小示例与检查方法

1. 写代码构建个死锁场景;  2. 如何判断程序死锁

并发(九):检查死锁与Locked ownable synchronizers

通过jstack可快速检查线程的死锁信息,用法如下:# 获取JVM ID(JAVA 进程ID),通过参数lv可以获取更详细的JAVA方法调用信息 jps -lv # 得到JVM ID后,执行jstac...

DB2检查死锁和解锁的命令(AIX系统)

在交易量比较大的系统上经常由于程序原因或者数据库配置参数不当导致死锁发生。在交易高峰期,检查易发生死锁的表就很有必要。 常用命令如下: 1.检查监视器开关是否打开: db2 get monitor...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)