Sql-Server
是否可以跟踪我在表上刪除主鍵聚集索引的進度?
我有一個需要刪除的大型主鍵聚集索引。我相信刪除它也會觸發非聚集索引(也很大)上的索引重建。有沒有辦法確定這些過程的進度?
如果您使用的是企業版或同等版本,則可以刪除主鍵
ONLINE
:ALTER TABLE Production.TransactionHistory DROP CONSTRAINT PK_TransactionHistory_TransactionID WITH (ONLINE = ON);
這將允許您使用 Profiler 事件類進度報告監控進度:線上索引操作或擴展事件:
progress_report_online_index_operation
在聯機索引建構過程中發生,以指示建構操作的進度。線上索引建構操作的每個階段都會生成一個事件。使用此事件來監控線上索引建構。
它提供以下事件欄位:
從 SQL Server 2014 開始,您可以使用查詢配置文件來跟踪CREATE INDEX語句的進度。您還可以使用它來獲取有關 DROP INDEX 過程的一些進度資訊。
具體來說,以下查詢將顯示當您刪除聚集索引時對非聚集索引的更新進度,因為必須掃描 HEAP,以便在聚集索引之後可以更新非聚集索引中的 RID 指針掉了。
SELECT node_id, physical_operator_name, SUM(row_count) row_count, SUM(estimate_row_count) AS estimate_row_count, CAST(SUM(row_count)*100 AS float)/SUM(estimate_row_count) as estimate_percent_complete FROM sys.dm_exec_query_profiles WHERE session_id=62 --update to session id of session dropping the index GROUP BY node_id,physical_operator_name ORDER BY node_id desc;
請注意,如果您有多個非聚集索引,您將看到“estimate_percent_complete”列多次達到 100%。在刪除聚集索引時,該腳本最初也不會返回任何行,因為查詢配置文件不會為此過程返回任何資訊。