MSSQL中如何查看行锁等待

MSSQL中如何查看行锁等待

更新时间:2019-12-31 15:36:10

概述

本文主要介绍MSSQL中如何查看行锁等待。

 

详细信息

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

可以使用如下SQL语句,查看当前实例的行锁等待情况。

use master;
go
WITH CTE_SID ( BSID, SID, sql_handle )
AS ( SELECT [Blocking_Session_ID],
[Session_ID] ,
sql_handle
FROM sys.dm_exec_requests
WHERE [Blocking_Session_ID] <> 0
UNION ALL
SELECT A.[Blocking_Session_ID] ,
A.[Session_ID] ,
A.sql_handle
FROM sys.dm_exec_requests A
JOIN CTE_SID B ON A.[Session_ID] = B.BSID
)
SELECT C.BSID,
C.SID ,
S.login_name ,
S.host_name ,
S.status ,
S.cpu_time ,
S.memory_usage ,
S.last_request_start_time ,
S.last_request_end_time ,
S.logical_reads ,
S.row_count ,
q.text
FROM CTE_SID C
JOIN sys.dm_exec_sessions S ON C.sid = s.[Session_ID]
CROSS APPLY sys.dm_exec_sql_text(C.sql_handle) Q
ORDER BY sid

注:

  • 如果出现行锁等待或者堵塞现象,则会在执行结果中罗列出来。
  • BSID是指持有锁的sessionID。
  • SID是指等待锁的sessionID。

 

适用于

  • 云数据库 RDS SQL Server 版