1.目前我只是在sql 2008和2005上实验成功:
在数据库开启跟踪标识:
DBCC TRACEON(1204,-1)
DBCC TRACEON(1222,-1)
这两个跟踪标记都是将死锁写到错误日志中,不过1204是以文本格式进行,而1222是以XML格式保存。
开启后通过查看数据库日志文件就可以找到是那个语句引发死锁。
1.模拟一个死锁:
1 DBCC TRACEON(1204,-1)2 DBCC TRACEON(1222,-1)3
4 CREATE TABLE Lock1(C1 int default(0));5 CREATE TABLE Lock2(C1 int default(0));6 INSERT INTO Lock1 VALUES(1);7 INSERT INTO Lock2 VALUES(1);8
9 将以下脚本分别打开到两个查询分析器窗口中:10
11 1.12 Begin Tran
13 Update Lock1 Set C1=C1+1;14 WaitFor Delay '00:01:00';15 SELECT * FROMLock216 Rollback Tran;17
18 2.19 Begin Tran
20 Update Lock2 Set C1=C1+1;21 WaitFor Delay '00:01:00';22 SELECT * FROMLock123 Rollback Tran;
依次执行完毕后,稍后片刻会出现死锁详情: