SQL Server 的交易記錄檔(LDF)持續增長是資料庫管理員常見的頭痛問題。雖然網路上有許多「縮減記錄檔」的技巧,但治標不治本。真正的解決之道,在於理解記錄檔增長的機制,並建立正確的維護策略。
最直接的作法是將資料庫的復原模式設為「簡單」(Simple Recovery Model)。在 SQL Server 2000 的 Enterprise Manager 中,右鍵點選資料庫 → 「屬性」→ 「選項」→ 「復原」,選擇「簡單」;或在 Query Analyzer 執行:
EXEC sp_dboption 'your_dbname', 'trunc. log on chkpt.', 'TRUE'
此模式下,每當發生 Checkpoint 時,SQL Server 會自動截斷非作用中的記錄檔部分,釋放空間供重複使用,記錄檔便不會持續增長。
代價是:無法執行交易記錄備份,也就失去了「時間點還原」的能力。一旦發生誤操作(如誤刪資料表),只能回復到上一次完整備份的時間點,中間所有變更將永久遺失。絕不建議在生產環境資料庫使用此模式,除非你完全清楚風險且有其他備援機制(如異地複寫),或是這只是開發/測試環境。
生產環境應採用「完整復原模式」(Full Recovery Model)。在此模式下,記錄檔只會在「交易記錄備份」完成後,才截斷非作用部分並釋放空間重複使用。
關鍵在於建立自動化的備份排程,例如:
透過「資料庫維護計畫精靈」即可輕鬆設定。務必勾選「備份檔案保留期限」,避免備份檔案佔滿磁碟。
若資料庫極大,可考慮使用「檔案群組」進行檔案層級的備份與還原,進一步縮短復原時間目標(RTO)。
防止記錄檔暴增的核心不在於「如何縮小」,而在於「正確的復原模式搭配自動化備份策略」。簡單模式適合非關鍵環境;完整模式 + 定期記錄備份才是生產環境的專業選擇。