DBCC TRACESTATUS(-1)
取消跟踪1204:
在设定跟踪1204后,会在数据库的日志文件里显示SQL Server数据库死锁时一些信息,
但那些信息很难看懂,需要对照SQL Server联机丛书仔细来看.
根据PAG锁要找到相关数据库表的方法:
DBCC TRACEON (3604)
DBCC PAGE (db_id,file_id,page_no)
DBCC TRACEOFF (3604)
|
请参考sqlservercentral.com上更详细的讲解.
从CSDN学到了一个找到死锁原因的方法.
我稍加修改, 去掉了游标操作并增加了一些提示信息,写了一个系统存储过程sp_who_lock.sql.
需要的时候直接调用:
sp_who_lock
就可以查出引起死锁的进程和SQL语句.
SQL Server自带的系统存储过程sp_who和sp_lock也可以用来查找阻塞和死锁, 但没有这里介绍的方法好用.
如果想知道其它tracenum参数的含义,请看www.sqlservercentral.com文章
我们还可以设置锁的超时时间(单位是毫秒), 来缩短死锁可能影响的时间范围:
例如:
use master
seelct @@lock_timeout
set lock_timeout 900000
-- 15分钟
seelct @@lock_timeout
|
(T114)