交易記錄(Transaction Log,LDF)記錄資料庫所有修改操作,是**恢復機制、複寫、鏡像、AlwaysOn 的基石**。關鍵特性:
| 復原模式 | 記錄截斷觸發時機 | 適用場景 | 資料遺風險 |
|---|---|---|---|
| 完整 | 記錄備份完成後 | 生產環境、需時間點還原 | 無(配合記錄備份) |
| 大量記錄 | 記錄備份完成後 | 大量匯入/索引重建期間暫時切換 | 極低(大量操作最小記錄) |
| 簡單 | Checkpoint 時自動截斷 | 測試、唯讀、可接受遺失近期資料 | 高(無法時間點還原) |
頻率視 RPO 而定(如 15-60 分鐘)。備份會標記非作用 VLF 可覆寫,**不會縮小實體檔案大小**。
-- 壓縮指定記錄檔至目標大小(MB) DBCC SHRINKFILE (N'DBName_log', 512);
最佳實踐:先備份、再壓縮;避開業務尖峰;壓縮後檔案大小應 ≥ 正常運行高水位,避免頻繁自動增長碎片化。
| 原因 | 徵兆 | 對策 |
|---|---|---|
| 長時間未執行記錄備份 | VLF 全為作用中,無法截斷 | 立即備份記錄、壓縮檔案、調整備份頻率 |
| 長時間執行/未提交交易 | 舊 VLF 無法釋放 | 監控 DBCC OPENTRAN,殺除阻塞連線 |
| 大量索引重建/大量匯入 | 短時間產生海量記錄 | 切換大量記錄模式、分批處理、預先擴大記錄檔 |
| 複寫/鏡像/AlwaysOn 同步延遲 | 記錄無法截斷待同步 | 檢查次要節點狀態、網路頻寬、考慮暫停複寫 |
| 簡單模式下大量交易超過 Checkpoint 間隔 | 臨時記錄暴增 | 縮短復原間隔、分批提交 |
BACKUP LOG DBName TO DISK='path\log.trn' WITH NO_TRUNCATE;DBCC SHRINKFILE (DBName_log, 目標MB);⚠️ **僅限簡單模式、確認無未提交交易、可接受近期資料遺失時使用。**
DBCC LOGINFO 檢視。交易記錄是 SQL Server 可靠性的核心。**正確復原模式 + 規律記錄備份 + 合理自動增長 + 獨立儲存**四大支柱缺一不可。遇 9002 錯誤先冷靜分析原因,優先採標準備份+壓縮流程,切勿輕易刪除 LDF。