DCM(Differential Changed Map,差異變更對應)頁面追蹤資料庫檔案中哪些區在最近一次完整備份之後被修改過。它是差異備份能夠「只備份變更資料」的關鍵機制。
建立新資料庫 TESTDB 後,執行:
DBCC PAGE(TESTDB, 1, 6, 3); -- printopt=3 顯示區層級分配狀態
初始狀態下,系統物件佔用的區會顯示 CHANGED(如區 0~23)。執行完整備份後,再次執行相同指令,會發現絕大多數區變為 NOT CHANGED,僅剩系統保留頁面維持 CHANGED(系統頁面必須每次備份)。
BCM(Bulk Changed Map,大量變更對應)頁面僅在資料庫設定為 BULK_LOGGED(大量記錄)復原模式 時發揮作用。
BULK INSERT、SELECT INTO、索引重建)採用最小記錄,不記錄每筆資料列的詳細變更。| 特性 | DCM | BCM |
|---|---|---|
| 追蹤目標 | 完整備份後的所有資料修改 | 記錄備份後的大量操作修改 |
| 服務備份類型 | 差異備份 | 記錄備份(大量記錄模式下) |
| 位元=1 含義 | 區已變更,需納入差異備份 | 區被大量操作修改,需納入記錄備份 |
| 重設時機 | 完整備份完成後 | 記錄備份完成後 |
| 適用復原模式 | 所有模式 | 僅 BULK_LOGGED |
DCM 與 BCM 是 SQL Server 實現增量備份策略的核心基礎設施。DCM 讓差異備份無需掃描整個資料庫;BCM 讓大量記錄模式下的記錄備份能捕獲最小記錄操作的資料頁內容。理解兩者運作時機與重設邏輯,有助於設計高效的備份維護計畫、排查備份效能問題,並正確選擇復原模式以平衡效能與資料保護需求。