日期:2014-05-17  浏览次数:20385 次

如何查看被锁的是哪行数据
最近经常出现死锁,我通过sp_lock和sys.dm_tran_locks 查询到了是哪张表
锁的type值是key,mode是S
Resource的值是相同的,我想知道这个Resource具体是个什么值啊

还有如何查看是哪条语句引起死锁的呢?



------解决方案--------------------
通过sql profileer,选择列出所有事件,选择Lock:

------解决方案--------------------
sys.dm_tran_locks 各字段含义:
http://technet.microsoft.com/zh-cn/library/ms190345(v=sql.105).aspx

据LZ的描述,应该不是死锁,发生死锁时是自动回滚的,通过sys.dm_tran_locks是看不到任何信息的.
应该先了解一下死锁和阻塞的区别.
------解决方案--------------------
引用:
Quote: 引用:

sys.dm_tran_locks里面Resource的值是什么?贴出来看看



spid dbid ObjId       IndId Type Resource Mode Status
54 20 1462668045 1 KEY (a0c936a3c965)                   S WAIT
这个内存地址暂时不知道怎么解释。但是我的这个DMV显示的列跟你的不一样哦,你先看看select object_name(1462668045)上的聚集索引,找到之后,用SELECT user_scans FROM sys.dm_db_index_usage_stats看看是不是和其他列的值相差很大,如果是,可能意味着你的索引效率不高,如果你要看哪句引起死锁,可以用DBCC INPUTBUFFER(SPID)来找