簡體   English   中英

如何使用C#在Windows窗體中顯示由MSSQL中的實時查詢統計啟用的執行查詢%?

[英]How can I display the Executing Query % which is enabled by Live Query Statistics in MSSQL in a windows form using C#?

在SSMS中,當我啟用實時查詢統計信息時,我可以在窗口左下角看到執行百分比。

在此輸入圖像描述

我想在Windows窗體上向最終用戶顯示此遞增百分比。 到目前為止,我嘗試使用Visual Studio上的進度條實現這一點,但結果直到我使用數據表,這是不可能的。

在此輸入圖像描述

忘記進度條,即使我可以在標簽上以文本格式顯示增量百分比 - 就像在SSMS中它將完成工作一樣。

任何在C#中實現代碼的建議都會有所幫助。

在SQL Server 2016 SP1 +上,可以通過dm_exec_query_profiles完成:

-- to enable LQS infrastructure, you have to do it once, also it can be set a startup trace:
DBCC TRACEON(7412, -1)

-- Session to track:
DECLARE @YourSessin INT = 760

-- Query that track a progress
SELECT  session_id ,
        node_id ,
        physical_operator_name ,
        SUM(row_count) row_count ,
        SUM(estimate_row_count) AS estimate_row_count ,
        IIF(COUNT(thread_id) = 0, 1, COUNT(thread_id)) [Threads] ,
        ISNULL(CAST(SUM(row_count) * 100. / NULLIF(SUM(estimate_row_count),0) AS DECIMAL(30, 2)),0) [PercentComplete] ,
        CONVERT(TIME, DATEADD(ms, MAX(elapsed_time_ms), 0)) [Operator time] ,
        DB_NAME(database_id) + '.' + OBJECT_SCHEMA_NAME(QP.object_id,
                                                        qp.database_id) + '.'
        + OBJECT_NAME(QP.object_id, qp.database_id) [Object Name]
FROM    sys.dm_exec_query_profiles QP
WHERE QP.session_id = @YourSessin
GROUP BY session_id ,
        node_id ,
        physical_operator_name ,
        qp.database_id ,
        QP.OBJECT_ID ,
        QP.index_id
ORDER BY session_id ,
        node_id

更緊湊的版本:

DBCC TRACEON(7412, -1)

DECLARE @YourSessin INT = 760

SELECT MIN( CAST(row_count * 100. / NULLIF(estimate_row_count,0) AS DECIMAL(30, 2))) [PercentComplete]         
FROM    sys.dm_exec_query_profiles QP 
WHERE QP.session_id = @YourSessin

請注意,啟用LQS基礎架構會增加一些開銷。 據MS稱,如果SQL Server 2016 SP1 +它是1-2%。 在舊版本中,它可以提高75%

在SQL Server 2019中,默認情況下啟用LQS,因此不需要任何操作。

有關最近主題中主題的更多信息: https//dba.stackexchange.com/questions/228957/sql-server-2014-view-any-live-execution-plan-in-activity-monitor/228958#228958

另一個警告是關於准確性:計算是基於查詢計划的estimate_row_count,因此估計可能非常粗略,特別是如果統計數據不是最新的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM