sys.dm_exec_sql_text如何工作?

时间:2015-08-12 14:43:29

标签: 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)是一个有效的查询? 谢谢。

1 个答案:

答案 0 :(得分:4)

您需要将它连接到另一个表以获取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).

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