SQL Server 系统表介绍:sys.dm_exec_requests
针对 SQL Server 内正在执行的每个请求返回一行。sys.dm_exec_connections、sys.dm_exec_sessions 和sys.dm_exec_requests 服务器范围动态管理视图映射到 sys.sysprocesses 系统视图(先前为系统表)。
若要执行在 SQL Server 以外的代码(例如,扩展存储过程和分布式查询),则必须在非抢先计划程序的控制范围以外执行该线程。若要这样做,工作线程将切换到抢先模式。由此动态管理视图返回的时间值不包括在抢先模式下花费的时间。
|
列名 | 数据类型 | 说明 | |
---|---|---|---|
session_id |
smallint |
与此请求相关的会话的 ID。不可为空值。 |
|
request_id |
int |
请求的 ID。在会话的上下文中是唯一的。不可为空值。 |
|
start_time |
datetime |
计划运行请求的时间。不可为空值。 |
|
status |
nvarchar(60) |
请求的状态。可能的值包括:
不可为空值。 |
|
command |
nvarchar(32) |
标识正在处理的命令的类型。常用命令类型包括:
通过结合使用 sys.dm_exec_sql_text 动态管理函数和请求的相应 sql_handle,可以检索该请求的文本。内部系统进程将基于它们所执行的任务类型来设置该命令。这些任务可以包括:
不可为空值。 |
|
sql_handle |
varbinary(64) |
请求的 SQL 语句句柄。该句柄可用于通过sys.dm_exec_sql_text 动态管理函数检索实际语句文本。不可为空值。 |
|
statement_start_offset |
int |
执行批处理或存储过程中的执行语句的开始字符位置。可以与statement_end_offset、sys.dm_exec_sql_text 动态管理函数和 sql_handle 一起使用,为请求检索正在执行的语句。可为空值。 |
|
statement_end_offset |
int |
执行批处理或存储过程中正在执行的语句的结束字符位置。可以与statement_start_offset、sys.dm_exec_sql_text 动态管理函数和 sql_handle 一起使用,为请求检索正在执行的语句。可为空值。 |
|
plan_handle |
varbinary(64) |
请求的查询计划句柄。若要查看查询计划,请结合使用sys.dm_exec_query_plan 动态管理函数。若要查询计划缓存,请使用 sys.dm_exec_cached_plans 动态管理视图。若要查看计划属性,请使用 sys.dm_exec_plan_attributes 函数。可为空值。 |
|
database_id |
smallint |
正在运行请求的数据库的 ID。有关详细的数据库信息,请查询sys.databases 目录视图;或者,若要获得数据库名称,请使用db_name() 内部函数。不可为空值。 |
|
user_id |
int |
正在运行请求的用户 ID。有关详细的用户信息,请查询sys.database_principals 目录视图。不可为空值。 |
|
connection_id |
uniqueidentifier |
请求到达时所采用的连接的 ID。有关物理或逻辑连接的详细信息,请查询 sys.dm_exec_connections 动态管理视图。可为空值。 |
|
blocking_session_id |
smallint |
正在阻塞请求的会话的 ID。如果此列为 0,则表示请求未被阻塞,或者锁定会话的信息不可用或无法进行标识。 -2 = 阻塞资源由孤立的分布式事务拥有。 -3 = 阻塞资源由延迟的恢复事务拥有。 -4 = 由于内部闩锁状态转换而无法确定阻塞闩锁所有者的会话 ID。 |
|
wait_type |
nvarchar(60) |
如果请求被阻塞,则此列返回等待类型。可为空值。 |
|
wait_time |
int |
如果请求被阻塞,则此列返回当前等待的持续时间(毫秒)。不可为空值。 |
|
last_wait_type |
nvarchar(64) |
如果此请求先前已经阻塞,则此列返回上次等待的类型。不可为空值。 |
|
wait_resource |
nvarchar(512) |
如果请求被阻塞,则此列返回正在等待请求的资源。不可为空值。 |
|
open_transaction_count |
int |
为此请求打开的事务数。不可为空值。 |
|
open_resultset_count |
int |
为此请求打开的结果集的个数。不可为空值。 |
|
transaction_id |
bigint |
在其中执行此请求的事务的 ID。对于 SQL Server 实例,该 ID 是唯一的。用来查询sys.dm_tran_active_transactions、sys.dm_tran_locks或 sys.dm_tran_database_transactions 动态管理视图。不可为空值。 |
|
context_info |
varbinary(128) |
请求的 SET CONTEXT_INFO 语句的值。可为空值。 |
|
percent_complete |
real |
为某些操作(包括回滚)完成的工作的百分比。 此操作不提供查询的进度数据。
不可为空值。 |
|
estimated_completion_time |
bigint |
仅供内部使用。不可为空值。 |
|
cpu_time |
int |
请求所使用的 CPU 时间(毫秒)。不可为空值。 |
|
total_elapsed_time |
int |
请求到达后经过的总时间(毫秒)。不可为空值。 |
|
scheduler_id |
int |
正在计划此请求的计划程序的 ID。有关此计划程序的详细信息,请查询 sys.dm_os_schedulers 动态管理视图。不可为空值。 |
|
task_address |
varbinary(8) |
分配给与此请求关联的任务的内存地址。有关此任务的详细信息,请查询 sys.dm_os_tasks 动态管理视图。可为空值。 |
|
reads |
bigint |
此请求执行的读取数。不可为空值。 |
|
Writes |
bigint |
此请求执行的写入数。不可为空值。 |
|
logical_reads |
bigint |
此请求已经执行的逻辑读取数。不可为空值。 |
|
text_size |
int |
此请求的 TEXTSIZE 设置。不可为空值。 |
|
language |
nvarchar(256) |
该请求的语言设置。可为空值。 |
|
date_format |
nvarchar(3) |
该请求的 DATEFORMAT 设置。可为空值。 |
|
date_first |
smallint |
该请求的 DATEFIRST 设置。不可为空值。 |
|
quoted_identifier |
bit |
1 = QUOTED_IDENTIFIER 对于该请求是 ON。否则为 0。 不可为空值。 |
|
arithabort |
bit |
1 = ARITHABORT 设置对于该请求是 ON。否则为 0。 不可为空值。 |
|
ansi_null_dflt_on |
bit |
1 = ANSI_NULL_DFLT_ON 设置对于该请求是 ON。否则为 0。 不可为空值。 |
|
ansi_defaults |
bit |
1 = ANSI_DEFAULTS 设置对于该请求是 ON。否则为 0。 不可为空值。 |
|
ansi_warnings |
bit |
1 = ANSI_WARNINGS 设置对于该请求是 ON。否则为 0。 不可为空值。 |
|
ansi_padding |
bit |
1 = ANSI_PADDING 设置对于该请求是 ON。 否则为 0。 不可为空值。 |
|
ansi_nulls |
bit |
1 = ANSI_NULLS 设置对于该请求是 ON。否则为 0。 不可为空值。 |
|
concat_null_yields_null |
bit |
1 = CONCAT_NULL_YIELDS_NULL 设置对于该请求是 ON。否则为 0。 不可为空值。 |
|
transaction_isolation_level |
smallint |
此请求的事务隔离级别。可能的值包括: 0 = 未指定 1 = 未提交读取 2 = 已提交读取 3 = 可重复 4 = 可序列化 5 = 快照 不可为空值。 |
|
lock_timeout |
int |
此请求的锁超时时间(毫秒)。不可为空值。 |
|
deadlock_priority |
int |
请求的 DEADLOCK_PRIORITY 设置。不可为空值。 |
|
row_count |
bigint |
已由此请求返回到客户端的行数。不可为空值。 |
|
prev_error |
int |
在执行请求期间发生的最后一个错误。不可为空值。 |
|
nest_level |
int |
正在对该请求执行的代码的嵌套级别。不可为空值。 |
|
granted_query_memory |
int |
为执行该请求的查询而分配的页数。不可为空值。 |
|
executing_managed_code |
bit |
指示此请求是否正在执行公共语言运行时对象,例如例程、类型和触发器。只要公共语言运行时对象在堆栈中,就会设置此值,甚至在从公共语言运行时运行 Transact-SQL 时,也会设置。不可为空值。 |


从 | 到 | 对于/应用 | 关系 |
---|---|---|---|
sys.dm_exec_sessions |
sys.dm_exec_requests |
session_id |
一对 零或一对多 |
sys.dm_exec_requests |
sys.dm_exec_sql_text(sql_handle) |
CROSS APPLY OUTER APPLY |
零或一对 零或一 |
sys.dm_exec_requests |
sys.dm_exec_query_plan(plan_handle) |
CROSS APPLY OUTER APPLY |
零或一对 零或一 |
sys.dm_exec_requests |
sys.dm_exec_cached_plans |
plan_handle |
零或一对 零或一 |
sys.dm_exec_requests |
sys.dm_exec_plan_attributes(plan_handle) |
CROSS APPLY OUTER APPLY |
零或一对 零或一 |
sys.dm_exec_requests |
sys.databases |
database_id |
一对一 |
sys.dm_exec_requests |
sys.database_principals |
user_id =principal_id
|
一对一 |
sys.dm_exec_connections |
sys.dm_exec_requests |
connection_id |
一对 零或一 |
sys.dm_exec_requests |
sys.dm_tran_active_transactions |
transaction_id |
一对一 |

A. 查找正在运行的批处理的查询文本
下例查询 sys.dm_exec_requests
以查找相关查询并从输出中复制其 sql_handle
。
SELECT * FROM sys.dm_exec_requests; GO
然后,若要获得语句文本,请将复制的 sql_handle
与系统函数 sys.dm_exec_sql_text(sql_handle)
一起使用。
SELECT * FROM sys.dm_exec_sql_text(< copied sql_handle >); GO
B. 查找正在运行的批处理持有的所有锁
下例查询 sys.dm_exec_requests
以查找相关批处理并从输出复制其 transaction_id
。
SELECT * FROM sys.dm_exec_requests GO
然后,若要查找锁信息,请将复制的 transaction_id
与系统函数 sys.dm_tran_locks
一起使用。
SELECT * FROM sys.dm_tran_locks WHERE request_owner_type = N'TRANSACTION' AND request_owner_id = < copied transaction_id >; GO
C. 查找所有当前阻塞的请求
下例查询 sys.dm_exec_requests
以查找有关被阻塞的请求的信息。
SELECT session_id ,status ,blocking_session_id ,wait_type ,wait_time ,wait_resource ,transaction_id FROM sys.dm_exec_requests WHERE status = N'suspended'; GO
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了