> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sync.cdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# SQL Server

CData Sync アプリケーションからSQL Server コネクタを使用して、SQL Server からデータを取得してサポートされている任意の同期先に移動できます。これを行うには、コネクタを追加し、コネクタへの認証を行い、接続を完了する必要があります。

## SQL Server コネクタを追加する

Sync でSQL Server のデータを使用できるようにするには、まず以下の手順でコネクタを追加する必要があります：

<ol>
  <li>Sync のダッシュボードから**接続**ページを開きます。</li>
  <li>**接続を追加**をクリックして**コネクタを選択**ページを開きます。</li>
  <li>**データソース**タブをクリックして
  **SQL Server** 行に移動します。</li>

  <li>
    行末にある**接続を設定**アイコンをクリックして、**新しい接続**ページを開きます。この操作により、
    **接続を追加**ダイアログボックスが開きます。

    **Note：** **接続を設定**アイコンが表示されない場合は、**コネクタをダウンロード**アイコンをクリックして SQL Server コネクタをインストールしてください。
  </li>

  <li>**接続を追加**ダイアログボックスに接続名を入力します。</li>
  <li>**追加**をクリックして、コネクタの**設定**タブを開きます。</li>
</ol>

新しいコネクタのインストールについての詳細は、
[接続](https://docs.sync.cdata.com/26.4/ja/connections/connections.md)を参照してください。

## SQL Server への認証

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

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

* [**Password**](#password)（デフォルト）
* [**NTLM**](#ntlm)
* [**Kerberos**](#kerberos)
* [**AzurePassword**](#azurepassword)
* [**AzureAD**](#azure-active-directory)
* [**AzureMSI**](#azure-managed-service-identity)
* [**AzureServicePrincipal**](#azure-service-principal)
* [**AzureServicePrincipalCert**](#azure-service-principal-certificate)

### 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 Active Directory（AD）ユーザーアカウントで接続するには、**Auth Scheme** で**AzureAD** を選択します。CData Sync は、接続するための組み込みOAuth アプリケーションを提供するため、追加のプロパティは必要ありません。

### Azure Managed Service Identity

Azure 仮想マシン上でCData Sync が実行されている場合にAzure マネージドサービスID（MSI）を利用するには、**Auth Scheme** で**Azure MSI** を選択します。追加のプロパティは必要ありません。

### Azure Service Principal

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

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

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

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

### Azure Service Principal Certificate

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

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

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

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

## 接続を完了する

接続を完了するには：

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

<ol start="2"><li>**Advanced** タブで詳細な接続設定を定義します。（ただし、ほとんどの場合、これらの設定は不要です。）</li>
<li>AzurePassword, AzureAD, AzureMSI, AzureServicePrincipal, or AzureServicePrincipalCert で認証する場合は、**SQL Server への接続**をクリックして SQL Server アカウントに接続します。</li>
<li>**作成およびテスト**をクリックして接続を作成します。</li></ol>

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

SQL Server は、ソースデータベースからの変更を追跡する2つの方法をサポートしています：

* **変更データキャプチャ（CDC）：** *変更データキャプチャ*は、テーブルに適用されるすべての変更を追跡し、それらの変更をシャドウ履歴テーブルに記録します。CDC は、主キー（例：**変更の追跡**）のみをキャプチャするのではなく、すべての行データを履歴テーブルに記録します。
* **変更の追跡：** *変更の追跡*は、CData Sync の効率的な追跡メカニズムを提供します。テーブルに変更の追跡を設定すると、ソーステーブルの行に影響を与えるDML 文はすべて、変更された行ごとに変更の追跡テーブルに変更の追跡情報を記録するようになります。

> [!NOTE]
>
> これらのメソッドの両方がテーブルで有効になっている場合、Sync はCDC を使用します。

好みの方法をセットアップするには、該当セクションの手順に従ってください。

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

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

#### CDC の有効化

Sync のSQL Server データソースでCDC を使用するには、次の前提条件が満たされていることを確認してください：

* SQL Server エージェントが起動していること。
* あなたがデータベースの`db_owner` 固定データベースロールのメンバーであること。

前提条件を確認したら、次のステートメントを送信してデータベースでCDC を有効化します：

```
USE [DatabaseName];
EXEC sys.sp_cdc_enable_db;
GO 
```

個々のテーブルでCDC を有効にするには、次のステートメントを送信します：

```
USE [DatabaseName];
EXEC sys.sp_cdc_enable_table 
@source_schema = [SchemaName],
@source_name   = [TableName],
@role_name     = NULL
GO 
```

デフォルトでは、このステートメントはすべてのカラムをキャプチャします。

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

SQL Server では、次の例に示すように`@captured_column_list` パラメータを追加して、カラムのサブセットをキャプチャできます：

```sql theme={null}
USE [DatabaseName];
EXEC sys.sp_cdc_enable_table
@source_schema = [SchemaName],
@source_name   = [TableName],
@role_name     = NULL,
@captured_column_list = N'ColumnName1, ColumnName2, ColumnName3'
GO
```

SQL Server CDC がカラムのサブセットのみをキャプチャするように構成されている場合、Sync はキャプチャ対象カラムのリストを自動的に検出し、初期ロードとその後のすべてのCDC 実行で、レプリケーションをそれらのカラムに限定します。カラムマッピングにはキャプチャ対象カラムのみが表示され、デフォルトで選択されます。

スキーマ変更後にSync が新しいキャプチャインスタンスに移行する際、古いインスタンスと新しいインスタンスの間でキャプチャ対象カラムに違いがあるかどうかを検出します。Sync がキャプチャインスタンス間をどのように移行するかについては、[スキーマの変更](#スキーマの変更)を参照してください。

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

データベースまたは個々のテーブルで変更の追跡を有効にできます。

データベースで変更の追跡を有効にするには、次のステートメントを送信します：

```
ALTER DATABASE [DatabaseName] SET CHANGE_TRACKING=ON (CHANGE_RETENTION=7 DAYS, AUTO_CLEANUP=ON);
```

CHANGE\_RETENTION パラメータは、変更追跡情報がデータベースに保持される期間を指定します。ベストプラクティスとして、Sync がコンフリクトやエラーを解決する時間を確保できるように長めの時間枠を設定します。最後に正常に実行されたジョブが保持期間外であった場合、Sync は自動的にテーブル全体を複製し、変更漏れがないことを確認します。

個々のテーブルで変更の追跡を有効にするには、次のステートメントを送信します：

```
ALTER TABLE [SchemaName].[TableName] ENABLE CHANGE_TRACKING;
```

> [!NOTE]
>
> 変更の追跡を使用するには、各テーブルに少なくとも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 レプリケーションおよび[ヒストリーモード](https://docs.sync.cdata.com/26.4/ja/getting-started/features.md#ヒストリーモード)を有効にしたCDC レプリケーションでサポートされています。

> [!NOTE]
>
> * SQL Server はテーブルごとに最大2つの同時キャプチャインスタンスをサポートしています。2つを超えるインスタンスが検出された場合、エラーが発生します。
> * Sync が移行を完了するまで、元のキャプチャインスタンスを削除しないでください。元のインスタンスを早期に削除すると、Sync がそこから残りの変更を読み取る必要があるため、ジョブが失敗します。

#### 変更の追跡

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

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

SQL Server データソースは差分レプリケーションをサポートしています。*差分レプリケーション*によりワークロードが大幅に軽減され、帯域幅の使用と同期の遅延が最小限に抑えられます。データを差分ごとに移動させることで、遅いAPI や毎日のクオータに対処する際、非常に高い柔軟性を発揮します。

SQL Server データソースのカラムに基づいて差分チェックカラムを構成する必要があります。

差分レプリケーションの設定方法の詳細は、[差分レプリケーション](https://docs.sync.cdata.com/26.4/ja/getting-started/features.md#差分レプリケーション)を参照してください。

## 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.

## 詳細について


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.