从函数和过程中查找运行时间最长的查询

时间:2015-02-19 19:00:02

标签: sql-server ssms

我有一个过程执行查询,而这个过程依次调用函数,而这些函数又可能会调用/不调用其他函数。所有这些过程和函数都有多个查询。 我想检查哪个是这个过程中运行时间最长的查询。

我在网上找到了这个脚本,但这对我不起作用。它只返回创建过程/函数语句,这些语句可能花费的时间最长,但它没有返回任何超出该值的内容,并且可能没有查看内部函数和过​​程,因为我选择了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

0 个答案:

没有答案