如何查找包含进程ID,进程名称,登录时间,用户,开始时间和持续时间的长时间运行的查询?


23

谁能帮我找到下面给出的长时间运行查询的详细信息。ProcessID,进程名称,数据库,主机,用户,进程登录时间,查询开始时间和查询持续时间。

我正在寻找可以提供此数据的查询或SP。

Answers:


38

至于评论,最好的工具是周围sp_whoIsActive亚当Machanic。它可以以多种方式使用,以查看启动脚本时正在运行的内容,也可以循环运行以监视某些特定操作,例如慢查询。

若要在循环中运行,请看这里:如何在循环中使用sp_whoisactive记录活动 要检测慢查询:如何使用sp_WhoIsActive查找慢的SQL Server查询

您可以直接使用DMV获取最慢的查询并从那里执行操作。检查Glenn Berry的诊断查询

最后,您可以使用此查询查找最耗时的查询。您可以使用dm_exec_query_stats来添加更多数据,或者与其他数据一起获取更多信息。请注意,每次重新启动服务器时,dmv都会被冲走并刷新。

SELECT  creation_time 
        ,last_execution_time
        ,total_physical_reads
        ,total_logical_reads 
        ,total_logical_writes
        , execution_count
        , total_worker_time
        , total_elapsed_time
        , total_elapsed_time / execution_count avg_elapsed_time
        ,SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
         ((CASE 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) st
ORDER BY total_elapsed_time / execution_count DESC;

编辑

新的选项“ First Reponder Kit”已经可用了。是一组脚本,由BrentOzar团队根据麻省理工学院的许可免费提供,可帮助完成各种任务,包括OP要求的脚本。在这种情况下,主要是sp_BlitzFirstsp_BlitzWho脚本。


10

我强烈建议sp_whoisactive。它是一个第三方SP,但可以告诉您上面列出的所有内容,并且不仅限于此。这是您武器库中不可思议的工具。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.