sys.dm_exec_sql_text 如何工作?

Jan*_*ine 5 sql sql-server-2012

你能解释一下原因吗

select * from sys.dm_exec_sql_text (sql_handle) 抛出错误(无效的列名“sql_handle”),但是

select * from sys.sysprocesses cross apply sys.dm_exec_sql_text (sql_handle)是一个有效的查询吗?谢谢。

Sim*_*ngs 6

您需要将其连接到另一个表才能获取 sql_handle (或 plan_handle)。

例如:

select a.session_id, a.start_time, status, a.command, text from sys.dm_exec_requests a cross apply sys.dm_exec_sql_text(sql_handle).
Run Code Online (Sandbox Code Playgroud)

sys.dm_exec_sql_text是一个表值函数,它需要将参数sql_handleplan_handle传递给它以便像其他函数一样返回结果。返回的结果是一个表(而不是返回单个值的标量函数)。