本文主要介绍MSSQL中如何查看行锁等待。
阿里云提醒您:
- 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
- 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
- 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
可以使用如下SQL语句,查看当前实例的行锁等待情况。
1 | use master;<br>go<br>WITH CTE_SID ( BSID, SID, sql_handle ) <br> AS ( SELECT [Blocking_Session_ID],<br> [Session_ID] ,<br> sql_handle<br> FROM sys.dm_exec_requests<br> WHERE [Blocking_Session_ID] <> 0 <br> UNION ALL<br> SELECT A.[Blocking_Session_ID] ,<br> A.[Session_ID] ,<br> A.sql_handle<br> FROM sys.dm_exec_requests A<br> JOIN CTE_SID B ON A.[Session_ID] = B.BSID<br> )<br> SELECT C.BSID,<br> C.SID ,<br> S.login_name ,<br> S.host_name ,<br> S.status ,<br> S.cpu_time ,<br> S.memory_usage ,<br> S.last_request_start_time ,<br> S.last_request_end_time ,<br> S.logical_reads ,<br> S.row_count ,<br> q.text<br> FROM CTE_SID C<br> JOIN sys.dm_exec_sessions S ON C.sid = s.[Session_ID]<br> CROSS APPLY sys.dm_exec_sql_text(C.sql_handle) Q<br> ORDER BY sid |
注:
- 如果出现行锁等待或者堵塞现象,则会在执行结果中罗列出来。
- BSID是指持有锁的sessionID。
- SID是指等待锁的sessionID。