共用方式為


定義狀態變數

此程式描述如何定義儲存 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 狀態變數

  1. 在 SQL Server Data Tools 中,開啟具有 CDC 流程的 SQL Server 2014 Integration Services (SSIS) 套件,您必須在其中定義變數。

  2. 按兩下 [ 套件總管] 索引標籤 ,然後新增變數。

  3. 為變數指定一個您能辨識為狀態變數的名稱。

  4. 為變數提供 String 資料類型。

請勿為變數提供值做為其定義的一部分。 值必須由 CDC 控制任務設定。

如果您打算使用具有 自動狀態持續性的 CDC 控制工作,CDC 狀態變數將會從您指定的資料庫狀態數據表讀取,並在其值變更時更新回該相同數據表。 如需狀態數據表的詳細資訊,請參閱 CDC 控制工作CDC 控制工作編輯器

如果您未使用 CDC 控制工作搭配自動狀態持續性,則必須從上次執行封裝時儲存其值的永續性記憶體載入變數值,並在處理目前處理範圍完成時將其寫回永續性記憶體。

另請參閱

CDC 控制工作
CDC 控制工作編輯器