[SQL]启动SQLServer的死锁检查

来源:互联网 发布:光海君 知乎 编辑:程序博客网 时间:2024/06/05 11:47
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
启动SQLServer的死锁检查
ReportDate:  2003/12/11

Preparedby:    郑昀

Articlelastmodifiedon2004-2-16

Theinformationinthisarticleappliesto:

ü       Microsoft2000,7.0
陈述:
对于死锁,通常可以通过TRACEFLAG1204、1205、1206,检查ERRORLOG里面的输出,和分析SQLTRACE的执行上下文判断死锁问题的来由。

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

 

执行下面的话可以把死锁记录到Errorlog中:

dbcctraceon(1204,3605,-1)
go
dbcctracestatus(-1)
go

  

 

得到的输出为:

DBCC执行完毕。如果DBCC输出了错误信息,请与系统管理员联系。
TraceFlagStatus
---------------
1204     1
1205     1
3605     1

(所影响的行数为3行)

DBCC执行完毕。如果DBCC输出了错误信息,请与系统管理员联系。

  

   

 

 

 

 

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

2004-01-1618:34:38.50spid4    ----------------------------------
2004-01-1618:34:38.50spid4    Startingdeadlocksearch1976

 

2004-01-1618:34:38.50spid4    TargetResourceOwner:
2004-01-1618:34:38.50spid4     ResType:LockOwnerStype:'OR'Mode:USPID:55ECID:0Ec:(0xAA577570)Value:0x4c25cba0
2004-01-1618:34:38.50spid4     Node:1 ResType:LockOwnerStype:'OR'Mode:USPID:55ECID:0Ec:(0xAA577570)Value:0x4c25cba0
2004-01-1618:34:38.50spid4     Node:2 ResType:LockOwnerStype:'OR'Mode:USPID:71ECID:0Ec:(0xABF07570)Value:0x9bd0ba00
2004-01-1618:34:38.50spid4    
2004-01-1618:34:38.50spid4    --nextbranch--
2004-01-1618:34:38.50spid4     Node:2 ResType:LockOwnerStype:'OR'Mode:USPID:71ECID:0Ec:(0xABF07570)Value:0x9bd0ba00
2004-01-1618:34:38.50spid4    
2004-01-1618:34:38.50spid4    
2004-01-1618:34:38.50spid4    Enddeadlocksearch1976...adeadlockwasnotfound.
2004-01-1618:34:38.50spid4    ----------------------------------

 

 

 

 

 

 

 

 

 



以下实际检测到死锁的日志输出,来自于一份非常棒的讲义“LogShippinginSQLServer2000.ppt”,作者是RonTalmage:

Deadlockencountered....Printingdeadlockinformation

 

Wait-forgraph

 

Node:1

KEY:7:1977058079:1(f600d547433a)CleanCnt:1Mode:XFlags:0x0

GrantList::

  Owner:0x19090e20Mode:X       Flg:0x0Ref:0Life:02000000SPID:54ECID:0

  SPID:54ECID:0StatementType:SELECTLine#:1

  InputBuf:LanguageEvent:Select*FromAuthors

 

RequestedBy:

   ResType:LockOwnerStype:'OR'Mode:SSPID:53ECID:0Ec:(0x19c5d530)Value:0x19090dc0Cost:(0/114)共2页  1 
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击