Sql-Server

SQL Server 收縮命令“estimated_completion_time”不斷上升

  • April 4, 2018

執行 SQL 2012 R2…

Microsoft SQL Server 2014 (SP2-GDR) (KB4019093) - 12.0.5207.0 (X64) 標準版(64 位)

執行收縮命令

DBCC SHRINKDATABASE(databaseNameHere)

(是的,我知道這不應該定期進行,如果有的話……我們有一個 200 GB 的數據庫並清除了多年的數據,並且應該能夠回收大約 100 GB 的空間)

當我在 1.5 小時檢查任務的狀態時,它是 49.1xxx percent_complete

它已經執行了 2.5 小時……現在是 49.5xxx percent_complete

此外,就在過去 20 分鐘內,estimated_completion_time(在 中找到sys.dm_exec_requests)已從 8,741,035 毫秒變為 9,385,086 毫秒…

驅動器上仍有大量可用空間。這是一個沒有人使用的開發/測試數據庫……所以有什麼關係?為什麼估計的時間不斷增加?

我一直在sp_who2 active用來驗證沒有塊…

SHRINKDATABASE並且SHRINKFILE直到最後一刻才真正將空間釋放到磁碟:它必須首先在文件中移動所有內容(這是需要很長時間的部分)。

為什麼進度看起來不是恆定的:空閒/已用空間分佈在一個大文件中,所以當它遇到一個空更新檔時它會“跳過”,當它遇到一個已用的部分時“減速”頁。

正如評論中提到的,我強烈建議使用SHRINKFILE而不是SHRINKDATABASE,因為您可以控制每個單獨文件的目標大小,並給每個文件一個合理的目標。例如,我通常會嘗試在每個數據文件中留出 15-25% 的可用空間。

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