HHH*_*HHH 5 sql t-sql sql-server sql-server-2012
我想sys.dm_exec_sql_text()在下面的查询中为 [sql_handle]应用表值函数。
SELECT sql_handle
FROM sys.dm_exec_query_stats A
Run Code Online (Sandbox Code Playgroud)
对我来说,以下 2 个查询不起作用
Select *,sys.dm_exec_sql_text(A.sql_handle)
from sys.dm_exec_query_stats A
Error:
Msg 4121, Level 16, State 1, Line 1
Cannot find either column "sys" or the user-defined function or aggregate "sys.dm_exec_sql_text", or the name is ambiguous.
Select *
from sys.dm_exec_query_stats A,
sys.dm_exec_sql_text(A.sql_handle)
Error:
Msg 4104, Level 16, State 1, Line 3
The multi-part identifier "A.sql_handle" could not be bound.
Run Code Online (Sandbox Code Playgroud)
你可以 CROSS APPLY :
...
from sys.dm_exec_query_stats A
CROSS APPLY sys.dm_exec_sql_text(A.sql_handle)
Run Code Online (Sandbox Code Playgroud)
就像微软的例子:
SELECT TOP 5 total_worker_time/execution_count AS [Avg CPU Time],
SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
((CASE qs.statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset
END - qs.statement_start_offset)/2) + 1) AS statement_text
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
ORDER BY total_worker_time/execution_count DESC;
Run Code Online (Sandbox Code Playgroud)