CDC ソース
CDC ソースは SQL Server 2012 変更テーブルから変更データの範囲を読み取り、変更内容を下流の他の SSIS コンポーネントに伝えます。
CDC ソースによって読み取られた変更データの範囲は "CDC 処理範囲" と呼ばれ、現在のデータ フローの開始前に実行される CDC 制御タスクによって決定されます。 CDC 処理範囲は、テーブル グループの CDC 処理の状態を保持するパッケージ変数の値から導き出されます。
CDC ソースは、データベース テーブル、ビュー、または SQL ステートメントを使用して、SQL Server データベースからデータを抽出します。
CDC ソースは、次の構成を使用します。
SQL Server CDC データベースにアクセスするための、SQL Server ADO.NET 接続マネージャー。 CDC ソース接続を構成する方法の詳細については、「[CDC ソース エディター] ([接続マネージャー] ページ)」を参照してください。
CDC のために有効にされたテーブル。
選択したテーブルのキャプチャ インスタンスの名前 (複数存在する場合)。
変更処理モード。
CDC 処理範囲が決定される基になる、CDC 状態パッケージ変数の名前。 CDC ソースによって、その変数が変更されることはありません。
CDC ソースによって返されるデータは SQL Server CDC 関数の cdc.fn_cdc_get_all_changes_<capture-instance-name> または cdc.fn_cdc_get_net_changes_<capture-instance-name> (使用できる場合) によって返されるデータと同じです。 唯一、必要に応じて追加できる列として __$initial_processing があります。この列は、現在の処理範囲がテーブルの初期読み込みの範囲と重複できるかどうかを示します。 初期処理の詳細については、「CDC 制御タスク」を参照してください。
CDC ソースには、1 つの標準出力と 1 つのエラー出力があります。
エラー処理
CDC ソースにはエラー出力があります。 コンポーネントのエラー出力には、次の出力列があります。
エラー コード: 値は常に -1 です。
エラー列: (変換エラーの) エラーの原因となるソース列。
エラー行の列: エラーの原因となったレコード データ。
CDC ソースは、エラー動作の設定に応じて、抽出処理中に発生したエラー (データ変換、切り捨て) をエラー出力に返します。 詳細については、「[CDC ソース エディター] ([エラー出力] ページ)」を参照してください。
データ型のサポート
Microsoft の CDC ソース コンポーネントはすべての SQL Server データ型をサポートし、SSIS データ型に正確にマッピングします。
CDC ソースのトラブルシューティング
以下に、CDC ソースのトラブルシューティング情報を示します。
このスクリプトを使用して問題を特定し、SQL Server Management Studio で再現する
CDC ソース操作は、CDC ソースを呼び出す前に実行される CDC 制御タスク操作によって管理されます。 CDC 制御タスクは、開始 LSN と終了 LSN が保存されている CDC 状態パッケージ変数の値を比較します。 CDC 制御タスクは、次のスクリプトに相当する関数を実行します。
use <cdc-enabled-database-name>
declare @start_lsn binary(10), @end_lsn binary(10)
set @start_lsn = sys.fn_cdc_increment_lsn(
convert(binary(10),'0x' + '<value-from-state-cs>', 1))
set @end_lsn =
convert(binary(10),'0x' + '<value-from-state-ce>', 1)
select * from cdc.fn_cdc_get_net_changes_dbo_Table1(@start_lsn,
@end_lsn, '<mode>')
説明
<cdc-enabled-database-name> は、変更テーブルが含まれている SQL Server データベースの名前です。
<value-from-state-cs> は、CDC 状態変数に、CS/<value-from-state-cs>/ として示される値です (CS は Current-processing-range-Start (現在の処理範囲の開始) の略語です)。
<value-from-state-ce> は、CDC 状態変数に、CE/<value-from-state-ce>/ として示される値です (CE は Current-processing-range-End (現在の処理範囲の終了) の略語です)。
<mode> は、CDC の処理モードです。 この処理モードは、[すべて]、[古い値を含むすべて]、[差分]、[更新マスクを含む差分]、[結合を含む差分] のいずれかの値です。
このスクリプトを実行すると、エラーの再現と特定を簡単に行うことができる SQL Server Management Studio で問題を再現することによって、問題を特定できます。
SQL Server エラー メッセージ
SQL Server によって、次のメッセージが返されることがあります。
プロシージャまたは関数 cdc.fn_cdc_get_net_changes_<..> に指定された引数が不足しています。
このエラーは、引数が不足していることを示すものではありません。 CDC 状態変数の開始または終了 LSN 値が無効であることを示します。
CDC ソースの構成
CDC ソースは、プログラムによって、または SSIS デザイナーを使用して構成できます。
詳細については、次の各トピックを参照してください。
[詳細エディター] ダイアログ ボックスには、プログラムによって設定できるプロパティが表示されます。
[詳細エディター] ダイアログ ボックスを開くには、次の操作を実行します。
- SQL Server 2012 Integration Services (SSIS) プロジェクトの [データ フロー] 画面で、CDC ソースを右クリックし、[詳細エディターの表示] をクリックします。
[詳細エディター] ダイアログ ボックスで設定できるプロパティの詳細については、「CDC ソースのカスタム プロパティ」を参照してください。
このセクションの内容
関連コンテンツ
- mattmasson.com のブログ「CDC ソースの処理モード」