隨著資料庫長期運作,頻繁的資料刪除作業往往會導致資料庫檔案與交易記錄檔內部產生大量閒置空間。這不僅浪費寶貴的磁碟容量,還可能影響備份還原效能。當資料庫尚無資料時,可直接調整檔案屬性縮減佔用空間;但若資料庫已含資料,直接修改檔案大小將損壞資料完整性,此時必須採用「壓縮」機制來安全回收空間。
自動壓縮 vs 手動壓縮:兩種策略的選擇
SQL Server 提供兩種壓縮模式:
- 自動壓縮:在資料庫屬性的「選項」頁面啟用
Auto Shrink,系統會定期自動檢查並壓縮檔案。雖然省力,但會產生碎片、影響效能,生產環境通常不建議長期開啟。
- 手動壓縮:由 DBA 依業務低峰期排程執行,可精確控制壓縮對象(整個資料庫或單一檔案)與保留空間比例,風險較低且效果可預期。
使用 Enterprise Manager 進行手動壓縮
- 在 Enterprise Manager 中以滑鼠右鍵點選目標資料庫,依序選擇「所有工作」→「壓縮資料庫」。
- 於彈出對話框中選擇壓縮模式:
• 壓縮資料庫:一次處理所有資料與記錄檔。
• 壓縮檔案:針對特定 .mdf/.ndf/.ldf 個別設定。
• 壓縮計畫:建立定期維護排程。
- 點選「檔案」按鈕可進入逐檔設定介面,為每個資料庫檔案指定「釋放未使用空間」或「將頁面移至檔案開頭再壓縮」等選項。


最佳實務建議
- 壓縮作業會造成索引碎片,建議壓縮後緊接執行
DBCC INDEXDEFRAG 或重建索引。
- 避免在業務高峰期執行,壓縮過程會持有鎖定並消耗 I/O 資源。
- 預留適當空間(建議 10%-20%),避免資料成長時頻繁自動擴展造成效能抖動。
- 若資料庫處於「異常」或「單一使用者」模式,壓縮可能失敗,需先排除狀態異常。
掌握資料庫壓縮技巧,能有效管控儲存成本、維持 SQL Server 長期穩定運作。建議納入定期維護計畫,搭配索引整理與統計更新,發揮最大效益。