你能解释一下为什么
select * from sys.dm_exec_sql_text (sql_handle)
抛出错误(无效的列名称' sql_handle'),但
select * from sys.sysprocesses cross apply sys.dm_exec_sql_text (sql_handle)
是一个有效的查询?
谢谢。
答案 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_handle
或plan_handle
传递给它,以便像其他函数一样返回结果。返回的结果是一个表(而不是一个返回单个值的标量函数)。