SQL Server 2008 同時推出 **Change Data Capture (CDC)** 與 **Change Tracking (CT)**,同樣記錄 DML 變更,但架構、資料豐富度、效能影響截然不同。
| 維度 | Change Data Capture (CDC) | Change Tracking (CT) |
|---|---|---|
| 擷取方式 | **非同步** 讀取交易記錄檔 (Log Reader Agent) | **同步** 在 DML 執行時即時寫入追蹤表 |
| 資料豐富度 | 完整前後值、操作類型、時間、交易 ID | 僅主鍵、操作類型、變更欄位清單,**無前後值** |
| 延遲 | 秒~分鐘級 (視記錄讀取速度) | **近乎即時** (DML Commit 即可見) |
| 效能影響 | 低 (非同步、獨立 Agent) | 極低 (輕量同步寫入) |
| 儲存位置 | 獨立 CDC 變更資料表 (`cdc.*_CT`) | 內建追蹤表 (隱藏系統表) |
| 查詢介面 | `cdc.fn_cdc_get_all_changes_*` 等函數 | `CHANGETABLE(CHANGES ...)` 函數 + 版本號 |
| 適用場景 | **BI/ETL 增量抽取**、稽核、異地複寫來源 | **客戶端快取同步**、離線資料同步、輕量稽核 |
| 清理機制 | CDC 清理作業 (Agent 作業) 依保留期清除 | 自動清理 (背景執行緒) 依保留期清除 |
| 版本需求 | Enterprise/Developer | 所有版本 |
**CDC = 重資料豐富度、BI/ETL 專用、Enterprise 專屬**;**CT = 輕量、即時、全版本、快取同步首選**。實務上常 **CT 供應用層即時同步,CDC 供數據倉庫夜間增量抽取**,兩者互補共存。