メインコンテンツへスキップ

SQL Server コネクタを追加する

SQL Server への認証

コネクタを追加したら、必要なプロパティを設定します。

CData Sync は、いくつかの方法でSQL Server への認証をサポートしています。以下から認証方法を選択し、認証の詳細を含む該当セクションに進みます。

Password

ユーザー資格情報で接続するには、次のプロパティを指定します:
  • Auth Scheme: Password を選択。
  • User: SQL Server への認証に使用するユーザー名を入力。
  • Password: SQL Server への認証に使用するパスワードを入力。

NTLM

NTLM ユーザー資格情報で接続するには、次のプロパティを指定します:
  • Auth Scheme: NTLM を選択。
  • User: SQL Server への認証に使用するユーザー名を入力。
  • Password: SQL Server への認証に使用するパスワードを入力。
  • (オプション)Domain: Windows(NTLM)セキュリティログイン用のドメイン名を入力。
  • (オプション)NTLM Version: 使用したいNTLM バージョンを選択。デフォルトバージョンは1です。

Kerberos

Kerberos 資格情報で接続するには、次のプロパティを指定します:
  • Auth Scheme: Kerberos を選択。
  • User: SQL Server への認証に使用するユーザー名を入力。
  • Password: SQL Server への認証に使用するパスワードを入力。
  • Kerberos KDC: Kerberos キー配布センター(KDC)マシンのホスト名またはIP アドレスを入力。
  • Kerberos Realm: Kerberos への認証に使用するKerberos レルムを入力。
  • Kerberos SPN: Kerberos ドメインコントローラーのサービスプリンシパル名(SPN)を入力。
  • (オプション)Kerberos Keytab File: Kerberos キータブファイルの完全なファイルパスを入力。
  • (オプション)Kerberos Ticket Cache: MIT Kerberos 資格情報キャッシュファイルの完全なファイルパスを入力。

AzurePassword

Azure ユーザー資格情報で接続するには、次のプロパティを指定します:
  • Auth Scheme: AzurePassword を選択。
  • User: Azure への認証に使用するユーザー名を入力。
  • Password: Azure への認証に使用するパスワードを入力。

Azure Active Directory

Azure Managed Service Identity

Azure Service Principal

Azure サービスプリンシパルとクライアントシークレットで接続するには、次のプロパティを設定します:

  • Auth Scheme:AzureServicePrincipal を選択。
  • Azure Tenant:接続するMicrosoft Online テナントを入力。
  • OAuth Client Id:OAuth 認証サーバーにアプリケーションを登録した際に割り当てられたクライアントId を入力。
  • OAuth Client Secret:OAuth 認証サーバーにアプリケーションを登録した際に割り当てられたクライアントシークレットを入力。

アプリケーションのOAuth クライアントId およびクライアントシークレットを取得するには:

  1. Azure ポータルにログインします。
  2. 左ナビゲーションペインですべてのサービスを選択します。次にアプリの登録を検索し選択します。
  3. 新規登録をクリックします。
  4. アプリケーションの名前を入力して任意のAzure AD ディレクトリ - マルチテナントを選択します。
  5. アプリケーションを作成したら、概要セクションに表示されるアプリケーション (クライアント) ID の値をコピーします。この値をOAuth クライアントId として使用します。
  6. 証明書とシークレットセクションに移動して、アプリケーションの新しいクライアント シークレットを選択します。
  7. 有効期間を指定してクライアントシークレットを保存します。保存するとキーの値が表示されます。
  8. 値は一度しか表示されないので、コピーしておきます。この値をOAuth クライアントシークレットとして使用します。
  9. 認証タブで、必ずアクセストークン (暗黙的なフローに使用) を選択します。

Azure Service Principal Certificate

Azure サービスプリンシパルとクライアント証明書で接続するには、次のプロパティを設定します:

  • Auth Scheme:AzureServicePrincipalCert を選択。
  • Azure Tenant:接続するMicrosoft Online テナントを入力。
  • OAuth Client Id:OAuth 認証サーバーにアプリケーションを登録した際に割り当てられたクライアントId を入力。
  • OAuth JWT Cert:Java web token(JWT)証明書ストアを入力。
  • OAuth JWT Cert Type:JWT 証明書を格納するキーストアの種類を入力。デフォルトの種類はPEMKEY_BLOB です。
  • (オプション)OAuth JWT Cert Password:OAuth JWT 証明書のパスワードを入力。
  • (オプション)OAuth JWT Cert Subject:OAuth JWT 証明書のサブジェクトを入力。

アプリケーションのOAuth 証明書を取得するには:

  1. Azure ポータルにログインします。
  2. 左ナビゲーションペインですべてのサービスを選択します。次にアプリの登録を検索し選択します。
  3. 新規登録をクリックします。
  4. アプリケーションの名前を入力して任意のAzure AD ディレクトリ - マルチテナントを選択します。
  5. アプリケーションを作成したら、概要セクションに表示されるアプリケーション (クライアント) ID の値をコピーします。この値をOAuth クライアントId として使用します。
  6. 証明書とシークレットセクションに移動して、証明書のアップロードを選択します。次に、ローカルマシンからアップロードする証明書を選択します。
  7. 有効期間を指定してクライアントシークレットを保存します。保存するとキーの値が表示されます。
  8. 値は一度しか表示されないので、コピーしておきます。この値をOAuth クライアントシークレットとして使用します。
  9. 認証タブで、必ずアクセストークン (暗黙的なフローに使用) を選択します。

接続を完了する

接続を完了するには:
  1. Database プロパティ(オプション)には、SQL Server に接続する際に接続するデフォルトのデータベースを入力します。

SQL Server の変更データキャプチャのセットアップ

SQL Server は、ソースデータベースからの変更を追跡する2つの方法をサポートしています:
  • 変更データキャプチャ(CDC): 変更データキャプチャは、テーブルに適用されるすべての変更を追跡し、それらの変更をシャドウ履歴テーブルに記録します。CDC は、主キー(例:変更の追跡)のみをキャプチャするのではなく、すべての行データを履歴テーブルに記録します。
  • 変更の追跡: 変更の追跡は、CData Sync の効率的な追跡メカニズムを提供します。テーブルに変更の追跡を設定すると、ソーステーブルの行に影響を与えるDML 文はすべて、変更された行ごとに変更の追跡テーブルに変更の追跡情報を記録するようになります。
これらのメソッドの両方がテーブルで有効になっている場合、Sync はCDC を使用します。
好みの方法をセットアップするには、該当セクションの手順に従ってください。

CData Sync の変更データキャプチャの有効化

SQL Server CDC は、データベースと、CDC でレプリケートする各テーブルの両方で有効にする必要があります。以下のセクションでは、CDC を有効にする方法と、Sync がCDC キャプチャインスタンスに含まれるカラムをどのように処理するかを説明します。

CDC の有効化

Sync のSQL Server データソースでCDC を使用するには、次の前提条件が満たされていることを確認してください:
  • SQL Server エージェントが起動していること。
  • あなたがデータベースのdb_owner 固定データベースロールのメンバーであること。
前提条件を確認したら、次のステートメントを送信してデータベースでCDC を有効化します:
個々のテーブルでCDC を有効にするには、次のステートメントを送信します:
デフォルトでは、このステートメントはすべてのカラムをキャプチャします。

CDC キャプチャ対象カラムの設定

SQL Server では、次の例に示すように@captured_column_list パラメータを追加して、カラムのサブセットをキャプチャできます:
SQL Server CDC がカラムのサブセットのみをキャプチャするように構成されている場合、Sync はキャプチャ対象カラムのリストを自動的に検出し、初期ロードとその後のすべてのCDC 実行で、レプリケーションをそれらのカラムに限定します。カラムマッピングにはキャプチャ対象カラムのみが表示され、デフォルトで選択されます。 スキーマ変更後にSync が新しいキャプチャインスタンスに移行する際、古いインスタンスと新しいインスタンスの間でキャプチャ対象カラムに違いがあるかどうかを検出します。Sync がキャプチャインスタンス間をどのように移行するかについては、スキーマの変更を参照してください。

CData Sync の変更の追跡の有効化

データベースまたは個々のテーブルで変更の追跡を有効にできます。 データベースで変更の追跡を有効にするには、次のステートメントを送信します:
CHANGE_RETENTION パラメータは、変更追跡情報がデータベースに保持される期間を指定します。ベストプラクティスとして、Sync がコンフリクトやエラーを解決する時間を確保できるように長めの時間枠を設定します。最後に正常に実行されたジョブが保持期間外であった場合、Sync は自動的にテーブル全体を複製し、変更漏れがないことを確認します。 個々のテーブルで変更の追跡を有効にするには、次のステートメントを送信します:
変更の追跡を使用するには、各テーブルに少なくとも1つの主キーが必要です。

スキーマの変更

ソーステーブルのスキーマ変更をSync がどのように処理するかは、CDC を使用するか変更の追跡を使用するかによって異なります。

変更データキャプチャ

CDC を使用する場合、Sync はスキーマ変更後もSQL Server CDC キャプチャインスタンス間のシームレスな移行をサポートし、データ損失やフルリフレッシュなしにレプリケーションを継続できます。 SQL Server は既存のキャプチャインスタンスに新しいカラムを追跡しないため、スキーマ変更は次の手順で行います:
  1. ソーステーブルのスキーマを変更します。
  2. 新しい@capture_instance 名を指定してsys.sp_cdc_enable_table ストアドプロシージャを実行し、新しいCDC キャプチャインスタンスを作成します。SQL Server は古いインスタンスと新しいインスタンスを並列で実行します。 次のCDC ジョブ実行の開始時に、Sync は新しいキャプチャインスタンスを検出し、新しいインスタンスの開始ログシーケンス番号(min_lsn)までのすべての変更が処理されるまで、元のインスタンスからの読み取りを続けます。その後、Sync は自動的に新しいキャプチャインスタンスに切り替え、格納されているCDC メタデータを更新します。
Sync が新しいキャプチャインスタンスに移行する際、古いインスタンスと新しいインスタンスを比較し、カラムの違いをスキーマ変更として処理します:
  • 新しいキャプチャインスタンスに追加されたカラムは、同期先スキーマに追加されます。
  • 新しいキャプチャインスタンスから削除されたカラムは、レプリケートされなくなります。既存の同期先カラムは残りますが、更新されなくなります。
  • カラムの型変更により、同期先スキーマが変更されます。
Sync が移行を完了したら、sys.sp_cdc_disable_table を実行して古いキャプチャインスタンスを安全に削除できます。 この機能は、標準CDC レプリケーションおよびヒストリーモードを有効にしたCDC レプリケーションでサポートされています。
  • SQL Server はテーブルごとに最大2つの同時キャプチャインスタンスをサポートしています。2つを超えるインスタンスが検出された場合、エラーが発生します。
  • Sync が移行を完了するまで、元のキャプチャインスタンスを削除しないでください。元のインスタンスを早期に削除すると、Sync がそこから残りの変更を読み取る必要があるため、ジョブが失敗します。

変更の追跡

変更の追跡を使用すると、Sync は、ソーステーブル構造に変更(カラムの追加やデータ型の変更など)が加えられたときに、同期先テーブルを自動的に更新します。

差分レプリケーションのサポート

SQL Server データソースは差分レプリケーションをサポートしています。差分レプリケーションによりワークロードが大幅に軽減され、帯域幅の使用と同期の遅延が最小限に抑えられます。データを差分ごとに移動させることで、遅いAPI や毎日のクオータに対処する際、非常に高い柔軟性を発揮します。 SQL Server データソースのカラムに基づいて差分チェックカラムを構成する必要があります。 差分レプリケーションの設定方法の詳細は、差分レプリケーションを参照してください。

Always Encrypted Support

CData Sync connects to SQL Server sources by using the CData JDBC driver. The JDBC driver supports Always Encrypted columns, which enables Sync to read data from columns that use client-side encryption. When Sync reads from Always Encrypted columns, the JDBC driver returns decrypted plaintext values instead of binary or hexadecimal representations. This behavior allows encrypted columns to be included in replication workflows without causing read failures.

詳細について