此程式描述如何定義儲存 CDC 狀態的封裝變數。
CDC 狀態變數會由 CDC 控制工作載入、初始化及更新,並由 CDC 來源資料流元件用來判斷變更記錄的目前處理範圍。 CDC 狀態變數可以在 CDC 控制工作和 CDC 來源通用的任何容器上定義。 這可能位於封裝層級,但也可能位於其他容器上,例如迴圈容器。
不建議手動修改 CDC 狀態變數值,不過瞭解其內容很有用。
下表提供 CDC 狀態變數值元件的高階描述。
元件 | 說明 |
---|---|
<state-name> |
這是目前 CDC 狀態的名稱。 |
CS |
這會標示目前的處理範圍起點 (目前開始時間)。 |
<cs-lsn> |
這是上一次 CDC 執行中處理的最後一個記錄序號 (LSN)。 |
CE |
這會標示目前的處理範圍結束點(目前結束)。 CDC 狀態中 CE 元件的存在表示 CDC 套件目前正在處理,或 CDC 套件在完整處理 CDC 處理範圍之前失敗。 |
<ce-lsn> |
這是當前 CDC 執行中需要處理的最後一個 LSN。 一律假設要處理的最後一個序號是最大值 (0xFFF...)。 |
IR |
這會標示初始處理範圍。 |
<ir-start> |
這是初始載入開始之前變更的 LSN。 |
<ir-end> |
這是初始載入結束之後變更的 LSN。 |
TS |
這會標示上次 CDC 狀態更新的時間戳。 |
<時間戳> | 這是 64 位 System.DateTime.UtcNow 屬性的十進位表示法。 |
ER |
當最後一個作業失敗,並包含錯誤原因的簡短描述時,就會出現此情況。 如果此元件存在,則一律會顯示最後一個元件。 |
<short-error-text> |
這是簡短的錯誤描述。 |
LSN 和序號分別編碼為最多 20 位數的十六進位字串,代表 Binary(10) 的 LSN 值。
下表描述可能的 CDC 狀態值。
國家 | 說明 |
---|---|
(INITIAL) | 這是在目前 CDC 群組上執行任何套件之前的初始狀態。 這也是 CDC 狀態為空白時呈現的狀態。 |
ILSTART (初始載入已啟動) | 這是初始載入套件在 CDC 控制工作被呼叫後啟動的狀態。 |
ILEND(初始載入已結束) | 這是在呼叫 CDC 控制工作作業的 MarkInitialLoadEnd 之後,初始載入套件順利結束時的狀態。 |
ILUPDATE (初始載入更新) | 這是在初始載入後,仍處理初始處理範圍時,涓滴式更新包的運行狀態。 在執行 CDC 控制任務的作業呼叫後 GetProcessingRange 。如果使用 __$reprocessing 數據行,則會設定為 1,表示封裝可能已在目標端重新處理數據列。 |
TFEND (Trickle-Feed 更新結束) | 這是一般 CDC 回合所預期的狀態。 這種狀態表示上一個回合已順利完成,而且可以啟動具有新處理範圍的新回合。 |
TFSTART | 這是在執行 GetProcessingRange 操作並呼叫 CDC 控制任務之後,非初始執行的一個滴注更新套件的狀態。這表示已啟動一般的 CDC 執行,但尚未完成或未完全且正常結束( MarkProcessedRange )。 |
TFREDO (重新處理Trickle-Feed更新) | 在 GetProcessingRange 上,這是 TFSTART 之後發生的一種狀態。 這種狀態表示上一個回合並未順利完成。如果使用 __$reprocessing 數據行,則會設定為 1,表示封裝可能已在目標端重新處理數據列。 |
錯誤 | CDC 群組處於 ERROR 狀態。 |
以下是 CDC 狀態變數值的範例。
ILSTART/IR/0x0000162B158700000000//TS/2011-08-07T17:10:43.0031645/
ILSTART/IR/0x0000162B158700000000//TS/2011-08-07T17:10:43.0031645/
TFEND/CS/0x0000025B000001BC0003/TS/2011-07-17T12:05:58.1001145/
TFSTART/CS/0x0000030D000000AE0003/CE/0x0000159D1E0F01000000/TS/2011-08-09T05:30:43.9344900/
TFREDO/CS/0x0000030D000000AE0003/CE/0x0000159D1E0F01000000/TS/2011-08-09T05:30:59.5544900/
定義 CDC 狀態變數
在 SQL Server Data Tools 中,開啟具有 CDC 流程的 SQL Server 2014 Integration Services (SSIS) 套件,您必須在其中定義變數。
按兩下 [ 套件總管] 索引標籤 ,然後新增變數。
為變數指定一個您能辨識為狀態變數的名稱。
為變數提供 String 資料類型。
請勿為變數提供值做為其定義的一部分。 值必須由 CDC 控制任務設定。
如果您打算使用具有 自動狀態持續性的 CDC 控制工作,CDC 狀態變數將會從您指定的資料庫狀態數據表讀取,並在其值變更時更新回該相同數據表。 如需狀態數據表的詳細資訊,請參閱 CDC 控制工作和 CDC 控制工作編輯器。
如果您未使用 CDC 控制工作搭配自動狀態持續性,則必須從上次執行封裝時儲存其值的永續性記憶體載入變數值,並在處理目前處理範圍完成時將其寫回永續性記憶體。