我有一个过程执行查询,而这个过程依次调用函数,而这些函数又可能会调用/不调用其他函数。所有这些过程和函数都有多个查询。 我想检查哪个是这个过程中运行时间最长的查询。
我在网上找到了这个脚本,但这对我不起作用。它只返回创建过程/函数语句,这些语句可能花费的时间最长,但它没有返回任何超出该值的内容,并且可能没有查看内部函数和过程,因为我选择了TOP 1000行但它返回的内容大约只有60-70行创建语句而不是别的。
我可以请一点帮助吗?谢谢
SELECT DISTINCT TOP 10000
t.TEXT QueryName,
s.execution_count AS ExecutionCount,
s.max_elapsed_time AS MaxElapsedTime,
ISNULL(s.total_elapsed_time / s.execution_count, 0) AS AvgElapsedTime,
s.creation_time AS LogCreatedOn,
ISNULL(s.execution_count / DATEDIFF(s, s.creation_time, GETDATE()), 0) AS FrequencyPerSec
FROM sys.dm_exec_query_stats s
CROSS APPLY sys.dm_exec_sql_text( s.sql_handle ) t where t.dbid = DB_ID()
ORDER BY
s.max_elapsed_time asc
GO