次の方法で共有


状態変数の定義

適用対象: SQL Server Azure Data Factory の SSIS 統合ランタイム

重要

CDC 制御タスク、CDC ソース、CDC スプリッターなどの CDC フロー コンポーネントは非推奨となりました。 詳細については、お知らせを参照してください。

この手順では、CDC 状態が格納されるパッケージ変数を定義する方法について説明します。

CDC 状態変数は CDC 制御タスクによって読み込まれ、初期化され、更新されます。また、CDC ソース データ フロー コンポーネントによって使用され、変更レコードの現在の処理範囲が決まります。 CDC 状態変数は、CDC 制御タスクおよび CDC ソースに共通のコンテナーで定義できます。 これはパッケージ レベルでもかまいませんが、ループ コンテナーなどの他のコンテナー上に配置することもできます。

CDC 状態変数の値を手動で変更することはお勧めしませんが、その内容を理解すると便利な場合があります。

次の表に、CDC 状態変数値の各要素の概要を示します。

コンポーネント 説明
<state-name> 現在の CDC 状態の名前です。
CS 現在の処理範囲の始点 (Current Start) を示します。
<cs-lsn> 前回の CDC 実行で処理された最後のログ シーケンス番号 (LSN) です。
CE 現在の処理範囲の終点 (Current End) を示します。 CDC 状態に CE 要素が存在するかどうかにより、CDC パッケージが現在処理中であるか、または CDC 処理範囲が完全に処理される前に CDC パッケージが失敗したことが示されます。
<ce-lsn> 現在の CDC 実行で処理される最後の LSN です。 処理される最後のシーケンス番号が最大値 (0xFFF...) であると常に想定されます。
IR 初期処理範囲を示します。
<ir-start> 初期読み込みが開始した直前の変更の LSN です。
<ir-end> 初期読み込みが終了した直後の変更の LSN です。
TS CDC 状態の最後の更新のタイムスタンプを示します。
<timestamp> 64 ビットの System.DateTime.UtcNow プロパティの 10 進数表記です。
ER 直前の操作が失敗した場合に表示され、エラーの原因の簡単な説明が含まれます。 この要素が存在する場合は、常に最後に表示されます。
<short-error-text> エラーの簡単な説明です。

LSN とシーケンス番号はそれぞれ、Binary(10) の LSN 値を表す最大 20 桁の 16 進数文字列としてエンコードされます。

次の表に、使用可能な CDC 状態値を示します。

State 説明
(INITIAL) これは、現在の CDC グループでパッケージが実行される前の初期状態です。 CDC 状態が空のときの状態でもあります。
ILSTART (Initial Load Started) CDC 制御タスクに対する MarkInitialLoadStart 操作の呼び出し後、初期読み込みパッケージが開始したときの状態です。
ILEND (Initial Load Ended) CDC 制御タスクに対する MarkInitialLoadEnd 操作の呼び出し後、初期読み込みパッケージが正常に終了したときの状態です。
ILUPDATE (Initial Load Update) 初期読み込みの後にトリクル フィード更新パッケージが実行され、まだ初期処理範囲を処理しているときの状態です。 CDC 制御タスクに対する GetProcessingRange 操作の呼び出し後に、この状態になります。

__$reprocessing 列を使用する場合は、パッケージがターゲットに既に行を再処理している可能性があることを示すために 1 に設定されます。
TFEND (Trickle-Feed Update Ended) 定期的な CDC の実行で期待される状態です。 前の実行が正常に完了していることと、新しい実行を新しい処理範囲で開始できることを表します。
TFSTART これは、CDC コントロール タスクに対する GetProcessingRange 操作呼び出しの後の、トリクル フィード更新パッケージの初期化されていない実行の状態です。

これは、通常の CDC 実行が開始されているが、完了していないか、まだ完了していない (MarkProcessedRange) ことを示します。
TFREDO (Reprocessing Trickle-Feed Updates) TFSTART の後に GetProcessingRange が行われたときの状態です。 これは、前の実行が正常に完了しなかったことを示します。

__$reprocessing 列を使用する場合は、パッケージがターゲットに既に行を再処理している可能性があることを示すために 1 に設定されます。
ERROR CDC グループはエラー状態です。

次に、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 2019 Integration Services (SSIS) パッケージを開きます。

  2. パッケージ エクスプローラー タブを選択し、新しい変数を追加します。

  3. 変数に、状態変数として識別できる名前を付けます。

  4. 変数を String データ型に設定します。

変数に定義の一部として値を指定しないでください。 値は、CDC 制御タスクで設定する必要があります。

自動状態永続化で CDC 制御タスクを使用する場合、CDC 状態変数は指定したデータベース状態テーブルから読み取られ、その値が変更されると同じテーブルに更新されます。 State テーブルの詳細については、「 CDC コントロール タスク および CDC コントロール タスク エディターを参照してください。

自動状態永続化で CDC 制御タスクを使用していない場合は、パッケージが最後に実行されたときに値が保存された永続ストレージから変数値を読み込み、現在の処理範囲の処理が完了したときに永続ストレージに書き戻す必要があります。

参照

CDC Control Task
CDC 制御タスク エディター