Sql-Server

檢查更改索引重組/重建的進度

  • November 11, 2018

送出更改索引重組/重建時如何檢查進度/狀態?

很難說你的重建需要多長時間,因為 SQL 本身並不真正提前知道,也不能給你一個估計。

您可以使用以下查詢來使用 dm_exec_requests dmv 來查看索引重建已經進行了多長時間,並驗證 SQL 是否真的沒有估計:

SELECT r.session_id,r.command,CONVERT(NUMERIC(6,2),r.percent_complete)
AS [Percent Complete],CONVERT(VARCHAR(20),DATEADD(ms,r.estimated_completion_time,GetDate()),20) AS [ETA Completion Time],
CONVERT(NUMERIC(10,2),r.total_elapsed_time/1000.0/60.0) AS [Elapsed Min],
CONVERT(NUMERIC(10,2),r.estimated_completion_time/1000.0/60.0) AS [ETA Min],
CONVERT(NUMERIC(10,2),r.estimated_completion_time/1000.0/60.0/60.0) AS [ETA Hours],
CONVERT(VARCHAR(1000),(SELECT SUBSTRING(text,r.statement_start_offset/2,
CASE WHEN r.statement_end_offset = -1 THEN 1000 ELSE (r.statement_end_offset-r.statement_start_offset)/2 END)
FROM sys.dm_exec_sql_text(sql_handle)))
FROM sys.dm_exec_requests r WHERE command IN ('Alter Index')

但是,當涉及到對所需時間的實際估計時,您可以閱讀sqlmunkee的這篇不錯的部落格文章,其中總結了這一點,說“..it取決於。”:

而且由於我們並非都使用相同的硬體,使用相同的軟體或查看相同的數據,因此答案必須是…… ..這取決於

令人沮喪,但真實,可悲的是。

引用自:https://dba.stackexchange.com/questions/76375