在 SQL Server 中,可以使用以下查询语句来查找当前正在阻塞其他进程的进程和语句:

SELECT 
    blocking.session_id AS blocking_session_id, 
    blocking.wait_type AS blocking_wait_type, 
    blocking.wait_resource AS blocking_wait_resource, 
    blocked.session_id AS blocked_session_id, 
    blocked.wait_type AS blocked_wait_type, 
    blocked.wait_resource AS blocked_wait_resource, 
    blocked.last_wait_type AS blocked_last_wait_type,
    blocked.cpu_time AS blocked_cpu_time, 
    blocked.total_elapsed_time AS blocked_elapsed_time, 
    blocked.logical_reads AS blocked_logical_reads, 
    blocked.reads AS blocked_reads, 
    blocked.writes AS blocked_writes, 
    blocked.row_count AS blocked_row_count, 
    blocked.granted_query_memory AS blocked_granted_query_memory,
    blocked.query_plan AS blocked_query_plan,
    blocking.text AS blocking_text, 
    blocked.text AS blocked_text
FROM 
    sys.dm_exec_requests AS blocking
    JOIN sys.dm_exec_sessions AS blocking_session ON blocking.session_id = blocking_session.session_id
    JOIN sys.dm_os_waiting_tasks AS blocking_task ON blocking.session_id = blocking_task.session_id
    JOIN sys.dm_exec_requests AS blocked ON blocking_task.blocking_session_id = blocked.session_id
    JOIN sys.dm_exec_sessions AS blocked_session ON blocked.session_id = blocked_session.session_id
WHERE 
    blocking.blocking_session_id <> 0

该查询语句将返回以下信息:

  • 阻塞进程的会话 ID、等待类型和等待资源
  • 被阻塞进程的会话 ID、等待类型和等待资源、上一次等待类型、CPU 时间、总耗时、逻辑读取次数、读取次数、写入次数、行数和已授予的查询内存
  • 阻塞进程和被阻塞进程的 SQL 语
sql server 阻塞查询sql语句

原文地址: https://www.cveoy.top/t/topic/hcIT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录