データベース取り込みとレプリケーション > データベース取り込みとレプリケーションソース - 準備と使用方法 > Microsoft SQL Server、RDS for SQL Server、Azure SQL Database、Azure Managed Instanceソース
  

Microsoft SQL Server、RDS for SQL Server、Azure SQL Database、Azure Managed Instanceソース

データベース取り込みとレプリケーションタスクでMicrosoft SQL Serverソースを使用するには、最初にソースデータベースを準備し、使用に関する考慮事項を確認してください。SQL Serverソースタイプには、オンプレミスのSQL Server、Relational Database Service(RDS)for SQL Server、Azure SQL Database、およびAzure SQL Managed Instanceが含まれます。

ソースの準備:

使用に関する考慮事項:

SQL Server権限

SQL Serverソースからデータをレプリケートするには、データベース取り込みとレプリケーションユーザーに一部のSQL Server権限を付与する必要があります。

SQL Server CDCの有効化の前提条件

変更をキャプチャするには、[ログベース]または[CDCテーブル]のキャプチャメソッドを使用している増分ロードジョブと組み合わせロードジョブのデータベースとソーステーブルでSQL Server CDCを有効にする必要があります。
データベースでCDCを有効にするには、次の手順を実行します。
SQL ServerソーステーブルでCDCを有効にするには、db_ownerロールが割り当てられていることを確認し、次のコマンドを実行します。
EXEC sys.sp_cdc_enable_table @source_schema = N'<schemaname>', @source_name = N'<tablename>', @role_name = NULL;
注:
sp_cdc_enable_tableの構文には、最低限必要な引数が含まれています。より多くの引数を使用することができます。詳細については、WebSphereサーバーのマニュアルを参照してください。

データのレプリケートに必要な権限

必要な権限は、ジョブのロードタイプとCDCメソッドに応じて異なります。
ユーザーの作成
データベース接続には、マスタデータベースおよびソースデータベースでログインユーザーを作成する必要があります。
USE master;
CREATE DATABASE <DB>;
CREATE LOGIN <login_name> WITH PASSWORD = '<password>';
CREATE USER <user> FOR LOGIN <login_name>;

USE <DB>;
CREATE USER <user> FOR LOGIN <login_name>;
初期ロードジョブに対する権限
初期ロードジョブには、次の最小限の権限が必要です。
GRANT SELECT ON <table> TO <user>;
GRANT SELECT ON sys.system_internals_partition_columns to <user>;
増分ロードジョブ、および初期ロードと増分ロードの組み合わせジョブに対する権限
増分ロードジョブと組み合わせロードジョブの場合、初期ロードジョブに対して上記の最小限の権限に加えて、増分CDC処理に必要な追加の権限がいくつか必要となります。CDCの権限は、使用するCDCメソッドに応じて異なります。

SQL Serverソースの変更キャプチャメカニズム

データベース取り込みとレプリケーションは、SQL Serverソースから変更データをキャプチャしてそのデータをターゲットに適用するための、複数の変更キャプチャメカニズムを提供します。

CDCテーブルのみを使用した変更キャプチャ

データベース取り込みとレプリケーションの増分ロードジョブは、トランザクションログを使用せずにSQL Server CDCテーブルから直接変更をキャプチャできるようになりました。CDCテーブルは、デフォルトのCDCメソッドです。
CDCテーブルのみを使用する変更キャプチャ処理には、次のコンポーネントが関わります。
次の図は、SQL Serverのログベースの変更データキャプチャコンポーネントとデータフローを示しています。
  1. 1CDCキャプチャインスタンステーブルリーダーはcdcから変更を読み取ります。<capture instance>_CTテーブル内に存在する場合、キャプチャプロセスの初期化および開始中である。
  2. 2CDCキャプチャインスタンステーブルリーダーは変更レコードをCDCライターに送信します。
  3. 3CDCライターは変更レコードをフォーマットし、ターゲットに適用します。

トランザクションログとCDCテーブルを使用するログベースの変更データキャプチャ

ログベースのCDCを使用するデータベース取り込みとレプリケーションの増分ロードジョブは、アクティブなトランザクションログからレコードを解析し、CDCテーブルから変更レコードを直接読み取ることで、DMLとDDLの変更をキャプチャします。必要な再開ポイント(LSN)が利用可能な場合、変更データはアクティブなトランザクションログから読み取られます。キャプチャ開始点がトランザクションログ内のレコードより前の日付である場合、またはその他の特定の状況では、データベース取り込みとレプリケーションは自動的にCDCテーブルからの変更データの読み取りに移行します。CDCテーブルから変更を読み取った後、データベース取り込みとレプリケーションは、トランスペアレントな方法でアクティブなトランザクションログの読み取りに戻ります。
ログベースの変更キャプチャ処理には、次のコンポーネントが関わります。
次の図は、SQL Serverのログベースの変更データキャプチャコンポーネントとデータフローを示しています。
  1. 1ログリーダープロセスは、ログレコードを読み取り、コミットされたトランザクションのDMLおよびDDLの変更をキャプチャします。
  2. キャプチャプロセスは、コミットされたトランザクションが完了するか、致命的なエラーによってキャプチャプロセスが停止または中断されるか、cdc.<capture_instance>_CTテーブルからの変更レコードの読み取りへの切り替えがトリガーされるまで続行されます。
  3. 2特定の状況では、データベース取り込みとレプリケーションは、CDCキャプチャインスタンステーブルリーダーを使用して、cdc.<capture instance>_CTテーブルからの変更の読み取りに自動的に切り替わります。
  4. 以下の条件下では、処理は、cdc.<capture instance>_CTテーブルに切り替わります。
  5. 3ログリーダーとCDCキャプチャインスタンステーブルリーダーは、変更レコードをCDCライターに送信します。
  6. 4CDCライターは変更レコードをフォーマットし、ターゲットに適用します。

クエリベースの変更キャプチャ

データベース取り込みとレプリケーションの増分ロードジョブは、変更が発生したときに更新されるタイムスタンプカラムを照会することにで、ソースにおける挿入と更新の変更をキャプチャします。ソースの設定は、各ソーステーブルへの共通CDCクエリカラムの追加に制限されます。クエリベースのCDCメソッドはクエリカラムを使用して、指定のCDC間隔の開始以降に変更された行を識別します。
クエリベースの変更キャプチャを実装するには、タスクウィザードの[ソース]ページで次のオプションを設定します。
CDC間隔が経過した後、データベース取り込みとレプリケーションは、CDCクエリカラムを参照するWHERE句を含むSQLクエリを使用して、CDC間隔の間に変更を受け取った行を識別します。変更データがキャプチャされ、ターゲットに適用されます。
クエリベースのCDC用に選択されたソーステーブルにCDCクエリカラムがない場合、変更データキャプチャはこれらのテーブルを無視し、残りのテーブルで処理を続行します。スキップされたテーブルの場合、ターゲットデータベースで生成された、対応するテーブルは空になります。どのソーステーブルにもCDCクエリカラムがない場合、ジョブは実行時に失敗します。
次の図は、SQL Serverのクエリベースの変更データキャプチャコンポーネントとデータフローを示しています。
  1. 1CDC間隔が経過した後、データベース取り込みとレプリケーションは、CDCクエリカラムを使用して変更データを抽出するSQLクエリをソースデータベースで実行します。
  2. 2変更レコードがCDCライターに送信されます。
  3. 3CDCライターは変更レコードをフォーマットし、ターゲットに適用します。