暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SQL SERVER –查看长时间执行查询的完成百分比

原创 小小亮 2020-07-14
1786

今天,我们将看到我为我的客户编写的查询,该客户最近已升级到SQL Server 2019,并且一旦他们升级到新版本,他们的查询性能就会降低。我们在最近的综合数据库性能运行状况检查中解决了它们的性能问题。在咨询过程中,我们需要检查一些查询的状态(“ 查看百分比”),为此,我快速编写了一个查询,今天我们将看到它。

对于SQL Server 2019,以下查询将开箱即用。如果您正在运行其他版本的SQL Server,则可能必须启用带有跟踪标志7412的轻量级查询探查器才能使其正常工作。

image.png

SQL SERVER-完成长时间执行的查询的视图百分比已完成百分比0-800x427
查看长执行查询的完成百分比

SELECT  er.session_id AS SessionID,
        DB_NAME(er.database_id) DatabaseName, er.start_time, 
        DATEDIFF(ss,er.start_time,GETDATE()) AS ElapsedTime_Sec,
        er.wait_type AS WaitType, 
        er.wait_time WaitTime_MS, 
        SUBSTRING(est.TEXT, (er.statement_start_offset / 2) + 1,
                ((CASE er.statement_end_offset WHEN -1 
                        THEN DATALENGTH(est.[TEXT]) 
                        ELSE er.statement_end_offset END
                        - er.statement_start_offset) / 2) + 1) AS statement_text, 
        CONVERT(XML, qp.query_plan) QueryPlan, 
        100.0 * SUM(eqp.row_count) / SUM(eqp.estimate_row_count) AS PercentComplete
FROM        sys.dm_exec_requests er
INNER JOIN  sys.dm_exec_query_profiles eqp ON er.session_id = eqp.session_id AND er.request_id = eqp.request_id
CROSS APPLY sys.dm_exec_sql_text(er.sql_handle) est
CROSS APPLY sys.dm_exec_text_query_plan(er.plan_handle, er.statement_start_offset, er.statement_end_offset) qp
WHERE       er.session_id > 50 AND er.session_id != @@spid
GROUP BY    er.start_time, er.session_id, er.wait_type, er.wait_time, est.[TEXT], 
            er.statement_start_offset, er.statement_end_offset, 
            qp.query_plan, er.database_id
HAVING      SUM(eqp.estimate_row_count) > 0

现在,当您运行上面的查询时,它将为您提供系统上所有长期运行且长时间执行的查询的列表,您可以在最后一列看到完成的百分比。

image.png

这是我自己的系统中的图像,供您参考。请注意,尽管此查询有时会给出不正确的结果,但大多数情况下,它对我在客户计算机上的性能相当不错。让我知道此查询如何在您的服务器上运行。同时,不要忘了查看我的热门服务“ 综合数据库性能运行状况检查”。

如果您有任何建议,请发表评论。

作者:Pinal Dave
文章来源:https://blog.sqlauthority.com/2020/07/13/sql-server-view-percentage-completed-for-a-long-executing-query/

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论