SQL Server数据库发生
死锁时不会像ORACLE那样自动生成一个跟踪文件。有时可以在[管理]->[当前活动] 里看到阻塞信息(有时SQL Server企业管理器会因为锁太多而没有响应).
设定跟踪1204:
USE MASTER
DBCC TRACEON (1204,-1)
显示当前启用的所有跟踪标记的状态:
DBCC TRACESTATUS(-1)
取消跟踪1204:
DBCC TRACEOFF (1204,-1)
在设定跟踪1204后,会在数据库的日志文件里显示SQL Server数据库
死锁时一些信息。但那些信息很难看懂,需要对照SQL Server联机丛书仔细来看。根据PAG锁要找到相关数据库表的方法:
DBCC TRACEON (3604)
DBCC PAGE (db_id,file_id,page_no)
DBCC TRACEOFF (3604)
查到相应的表
是否能查到具体锁定的行或者多个行等。
信息结构:
db_id:file_id:page_no:row_no
To find out the table, use DBCC PAGE:
dbcc traceon(3604)
dbcc page (db_id, File_id, page_no)
So in this case,
dbcc traceon(3604)
dbcc page(1, 1, 1334)
the Object_id is in the page header, for example: m_objId = 36
select object_name(36) would give you the table name
查表:
select * from sysobjects where id = 1653632984
要获得索引,运行下面的代码:
select * from sysindexes where indid = 2 and id = 1653632984
阅读(869) | 评论(0) | 转发(0) |