SQL Server 2005 引入 Page Checksum (CHECKSUM) 保護資料頁完整性,但鮮為人知的 Log Block Checksum 同樣關鍵:它保護記錄檔寫入磁碟前的最後一道防線。
| 選項 | 保護對象 | 啟用位置 | 備註 |
|---|---|---|---|
| Backup CHECKSUM | 備份檔案內容 | BACKUP DATABASE ... WITH CHECKSUM | 驗證備份檔未損壞 |
| Page Verify CHECKSUM | 資料頁 (8KB) 寫入磁碟 | ALTER DATABASE ... SET PAGE_VERIFY CHECKSUM | 預設開啟 (SQL 2005+),偵測 I/O 子系統損壞資料頁 |
| Log Block Checksum | Log Block (512B~60KB) 寫入磁碟 | 永久啟用,無法關閉 | 每次寫入 Log Block 時自動計算並附加,讀取時驗證 |
Error 3456: Could not redo log record ... Log block checksum mismatch 表示記錄檔區塊校驗失敗。DBCC CHECKDB (REPAIR_ALLOW_DATA_LOSS) (極高風險)。BACKUP LOG ... WITH CHECKSUM 驗證備份鏈完整性。msdb.dbo.suspect_pages (雖主要針對資料頁,記錄檔損壞常伴隨資料頁異常)。Log Block Checksum 是 SQL Server 保護交易記錄完整性的內建、強制、零成本機制。DBA 應將其視為與 Page Checksum 同等重要,確保底層 I/O 子系統可靠性,並建立完整備份驗證流程。