查看未提交事务及阻塞.sql 1.4 KB

123456789101112131415161718192021222324252627282930
  1. use master
  2. select spid 进程,STATUS 状态, 登录帐号=SUBSTRING(SUSER_SNAME(sid),1,30)
  3. ,用户机器名称=SUBSTRING(hostname,1,12)
  4. ,是否被锁住=convert(char(3),blocked)
  5. ,数据库名称=SUBSTRING(db_name(dbid),1,20),cmd 命令,waittype as 等待类型
  6. ,last_batch 最后批处理时间,open_tran 未提交事务的数量
  7. from master.sys.sysprocesses
  8. Where status='sleeping' and waittype=0x0000 and open_tran>0
  9. select t1.resource_type [资源锁定类型],DB_NAME(resource_database_id) as 数据库名
  10. ,t1.resource_associated_entity_id 锁定对象,t1.request_mode as 等待者请求的锁定模式
  11. ,t1.request_session_id 等待者SID
  12. ,t2.wait_duration_ms 等待时间
  13. ,(select TEXT from sys.dm_exec_requests r cross apply
  14. sys.dm_exec_sql_text(r.sql_handle) where r.session_id=t1.request_session_id) as 等待者要执行的SQL
  15. ,(select SUBSTRING(qt.text,r.statement_start_offset/2+1,
  16. (case when r.statement_end_offset=-1 then DATALENGTH(qt.text) else r.statement_end_offset end -r.statement_start_offset)/2+1
  17. )
  18. from sys.dm_exec_requests r cross apply sys.dm_exec_sql_text(r.sql_handle)qt
  19. where r.session_id=t1.request_session_id) 等待者正要执行的语句
  20. ,t2.blocking_session_id [锁定者SID]
  21. ,(select TEXT from sys.sysprocesses p cross apply
  22. sys.dm_exec_sql_text(p.sql_handle)
  23. where p.spid=t2.blocking_session_id
  24. ) 锁定者执行语句
  25. from sys.dm_tran_locks t1,sys.dm_os_waiting_tasks t2
  26. where t1.lock_owner_address=t2.resource_address