SQL SERVER 查找锁信息

Posted kuku

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL SERVER 查找锁信息相关的知识,希望对你有一定的参考价值。

通过系统的存储过程  sp_who 或 sp_who2 可以查找出所有的锁信息, 但是看不出是哪个表, 什么语句

 

当使用 sp_who 或 sp_who2 查找锁信息的时候, 有个 spid 信息, 可以通过下面的语句查出相应的语句

DBCC INPUTBUFFER (spid)

使用这个语句, 不一定能查出信息, 能查出来, 就是执行的语句, 也有说这个是查死锁语句的。

 

下面语句查死锁数

select blocked
from (select * from sys.sysprocesses where  blocked>0 ) a 
where not exists(select * from (select * from sys.sysprocesses where  blocked>0 ) b 
where a.blocked=spid)

 

 

使用下面的语句, 可以查找出哪些表被锁,以及被锁的次数

select tablename, COUNT(*) CNT from (
	select   request_session_id   spid,OBJECT_NAME(resource_associated_entity_id) tableName   
	from   sys.dm_tran_locks where resource_type=‘OBJECT‘
) aa group by tableName
order by CNT desc

 

以上是关于SQL SERVER 查找锁信息的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server里的闩锁耦合(Latch Coupling)

SQL Server 2008中查看锁信息

Microsoft SQL Server 代码片段收集

缺少 SQL SERVER 2014 代码片段

Sql Server 优化----SQL语句的执行方式与锁以及阻塞的关系

Sql Server 优化----SQL语句的执行方式与锁以及阻塞的关系