Sql-Server
縮小海量數據庫文件
我有一個客戶,它為一家養老金公司提供 2 TB 的數據庫。該數據庫包含許多大文件。
他們想歸檔所有不是今年的東西。到目前為止沒問題 - 我只會為批次插入和刪除做一個 while 循環,然後在每個批次之備份份日誌。
執行歸檔後,我可以縮小數據庫嗎?如果我們談論移動的 400GB 可能需要多長時間?
對於這樣的伺服器來說,這聽起來像是一個非常繁重的過程。我可以在周末做,但我不確定它是否會及時停止執行。
首先,這需要預先提到,僅在實際需要時才收縮文件,因為您會導致大量索引碎片,之後您需要清理這些碎片。
話雖如此,如果您擔心執行整個收縮文件所需的時間,那麼您可以分階段進行(總體上需要更長的時間,但技術上可以更輕鬆地停止和恢復),我個人使用它來放棄它在 2GB 階段(在高事務數據庫上也很有用,以減少操作爭用以縮小我發現的更小的塊)
DECLARE @value int = 2048 DECLARE @target int = 1536 SET @value = (@value *1024)-2048 WHILE @value >= (@target*1024) BEGIN DBCC SHRINKFILE(filename ,@value) SET @value = @value - 2048 END
代替
@value
以 MB 為單位的文件的目前大小和
@target
你想縮小到什麼尺寸和
filename
使用您希望縮小的文件的名稱