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

export const CommonDatasourceMoreInformation = ({datasource = "the data source", advancedurl = "", siteName = "CData Sync", driverVersion = ""}) => {
  return <>
      <p>
        {siteName} と{datasource} の連携について、詳しくは{' '}
        <a href={`https://cdn.cdata.com/help/${advancedurl}${driverVersion}/jp/synch/default.htm`}>
          {datasource} Connector for {siteName}
        </a> を参照してください。
      </p>
    </>;
};

export const CommonAuthSchemeAzureserviceprincipalcert = () => {
  return <>
      <p>Azure サービスプリンシパルとクライアント証明書で接続するには、次のプロパティを設定します：</p>
      <ul>
        <li><strong>Auth Scheme：</strong><strong>AzureServicePrincipalCert</strong> を選択。</li>
        <li><strong>Azure Tenant：</strong>接続するMicrosoft Online テナントを入力。</li>
        <li><strong>OAuth Client Id：</strong>OAuth 認証サーバーにアプリケーションを登録した際に割り当てられたクライアントId を入力。</li>
        <li><strong>OAuth JWT Cert：</strong>Java web token（JWT）証明書ストアを入力。</li>
        <li><strong>OAuth JWT Cert Type：</strong>JWT 証明書を格納するキーストアの種類を入力。デフォルトの種類は<strong>PEMKEY_BLOB</strong> です。</li>
        <li>（オプション）<strong>OAuth JWT Cert Password：</strong>OAuth JWT 証明書のパスワードを入力。</li>
        <li>（オプション）<strong>OAuth JWT Cert Subject：</strong>OAuth JWT 証明書のサブジェクトを入力。</li>
      </ul>
      <p>アプリケーションのOAuth 証明書を取得するには：</p>
      <ol>
        <li><a href="https://portal.azure.com" target="_blank" rel="noopener noreferrer">Azure ポータル</a>にログインします。</li>
        <li>左ナビゲーションペインで<strong>すべてのサービス</strong>を選択します。次に<strong>アプリの登録</strong>を検索し選択します。</li>
        <li><strong>新規登録</strong>をクリックします。</li>
        <li>アプリケーションの名前を入力して<strong>任意のAzure AD ディレクトリ - マルチテナント</strong>を選択します。</li>
        <li>アプリケーションを作成したら、<strong>概要</strong>セクションに表示されるアプリケーション (クライアント) ID の値をコピーします。この値をOAuth クライアントId として使用します。</li>
        <li><strong>証明書とシークレット</strong>セクションに移動して、<strong>証明書のアップロード</strong>を選択します。次に、ローカルマシンからアップロードする証明書を選択します。</li>
        <li>有効期間を指定してクライアントシークレットを保存します。保存するとキーの値が表示されます。</li>
        <li>値は一度しか表示されないので、コピーしておきます。この値をOAuth クライアントシークレットとして使用します。</li>
        <li><strong>認証</strong>タブで、必ず<strong>アクセストークン (暗黙的なフローに使用)</strong> を選択します。</li>
      </ol>
    </>;
};

export const CommonAuthSchemeAzureserviceprincipal = () => {
  return <>
      <p>Azure サービスプリンシパルとクライアントシークレットで接続するには、次のプロパティを設定します：</p>
      <ul>
        <li><strong>Auth Scheme：</strong><strong>AzureServicePrincipal</strong> を選択。</li>
        <li><strong>Azure Tenant：</strong>接続するMicrosoft Online テナントを入力。</li>
        <li><strong>OAuth Client Id：</strong>OAuth 認証サーバーにアプリケーションを登録した際に割り当てられたクライアントId を入力。</li>
        <li><strong>OAuth Client Secret：</strong>OAuth 認証サーバーにアプリケーションを登録した際に割り当てられたクライアントシークレットを入力。</li>
      </ul>
      <p>アプリケーションのOAuth クライアントId およびクライアントシークレットを取得するには：</p>
      <ol>
        <li><a href="https://portal.azure.com" target="_blank" rel="noopener noreferrer">Azure ポータル</a>にログインします。</li>
        <li>左ナビゲーションペインで<strong>すべてのサービス</strong>を選択します。次に<strong>アプリの登録</strong>を検索し選択します。</li>
        <li><strong>新規登録</strong>をクリックします。</li>
        <li>アプリケーションの名前を入力して<strong>任意のAzure AD ディレクトリ - マルチテナント</strong>を選択します。</li>
        <li>アプリケーションを作成したら、<strong>概要</strong>セクションに表示されるアプリケーション (クライアント) ID の値をコピーします。この値をOAuth クライアントId として使用します。</li>
        <li><strong>証明書とシークレット</strong>セクションに移動して、アプリケーションの<strong>新しいクライアント シークレット</strong>を選択します。</li>
        <li>有効期間を指定してクライアントシークレットを保存します。保存するとキーの値が表示されます。</li>
        <li>値は一度しか表示されないので、コピーしておきます。この値をOAuth クライアントシークレットとして使用します。</li>
        <li><strong>認証</strong>タブで、必ず<strong>アクセストークン (暗黙的なフローに使用)</strong> を選択します。</li>
      </ol>
    </>;
};

export const CommonAuthSchemeAzuremsi = ({siteName = "CData Sync"}) => {
  return <>
      <p>
        Azure 仮想マシン上で{siteName} が実行されている場合にAzure マネージドサービスID（MSI）を利用するには、<strong>Auth Scheme</strong> で<strong>Azure MSI</strong> を選択します。追加のプロパティは必要ありません。
      </p>
    </>;
};

export const CommonAuthSchemeAzuread = ({siteName = "CData Sync"}) => {
  return <>
      <p>
        Azure Active Directory（AD）ユーザーアカウントで接続するには、<strong>Auth Scheme</strong> で<strong>AzureAD</strong> を選択します。{siteName} は、接続するための組み込みOAuth アプリケーションを提供するため、追加のプロパティは必要ありません。
      </p>
    </>;
};

export const CommonDatasourceAddConnector = ({datasource = "the data source", title = "the connector", destination = false, siteNameShort = "Sync"}) => {
  return <>
      <p>
        {siteNameShort} で{datasource} のデータを使用できるようにするには、まず以下の手順でコネクタを追加する必要があります：
      </p>
      <ol>
        <li>{siteNameShort} のダッシュボードから<strong>接続</strong>ページを開きます。</li>
        <li><strong>接続を追加</strong>をクリックして<strong>コネクタを選択</strong>ページを開きます。</li>
        <li>
          <strong>{destination ? "同期先" : "データソース"}</strong>タブをクリックして
          <strong>{title}</strong> 行に移動します。
        </li>
        <li>
          行末にある<strong>接続を設定</strong>アイコンをクリックして、<strong>新しい接続</strong>ページを開きます。この操作により、{' '}
          <strong>接続を追加</strong>ダイアログボックスが開きます。
          <br />
          <strong>Note：</strong> <strong>接続を設定</strong>アイコンが表示されない場合は、<strong>コネクタをダウンロード</strong>アイコンをクリックして {title} コネクタをインストールしてください。
        </li>
        <li><strong>接続を追加</strong>ダイアログボックスに接続名を入力します。</li>
        <li><strong>追加</strong>をクリックして、コネクタの<strong>設定</strong>タブを開きます。</li>
      </ol>
      <p>
        新しいコネクタのインストールについての詳細は、{' '}
        <a href="../connections">接続</a>を参照してください。
      </p>
    </>;
};

export const CommonDatasourceIntroSource = ({datasource = "the data source", siteName = "CData Sync"}) => {
  return <p>
      {siteName} アプリケーションから{datasource} コネクタを使用して、{datasource} からデータを取得してサポートされている任意の同期先に移動できます。これを行うには、コネクタを追加し、コネクタへの認証を行い、接続を完了する必要があります。
    </p>;
};

export const driverVersion = "M";

export const siteNameShort = "Sync";

export const siteName = "CData Sync";

export const datasource = "SQL Server";
export const pageTitle = "SQL Server";
export const advancedurl = "RU";
export const oauthschemes = "AzurePassword, AzureAD, AzureMSI, AzureServicePrincipal, or AzureServicePrincipalCert";

<CommonDatasourceIntroSource datasource={datasource} siteName={siteName} />

## {datasource} コネクタを追加する

<CommonDatasourceAddConnector datasource={datasource} title={pageTitle} destination={false} siteNameShort={siteNameShort} />

## {datasource} への認証

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

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

* [**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

<CommonAuthSchemeAzuread siteName={siteName} siteNameShort={siteNameShort} datasource={datasource} />

### Azure Managed Service Identity

<CommonAuthSchemeAzuremsi siteName={siteName} siteNameShort={siteNameShort} datasource={datasource} />

### Azure Service Principal

<CommonAuthSchemeAzureserviceprincipal siteName={siteName} siteNameShort={siteNameShort} datasource={datasource} />

### Azure Service Principal Certificate

<CommonAuthSchemeAzureserviceprincipalcert siteName={siteName} siteNameShort={siteNameShort} datasource={datasource} />

## 接続を完了する

接続を完了するには：

1. **Database** プロパティ（オプション）には、SQL Server に接続する際に接続するデフォルトのデータベースを入力します。
2. **Advanced** タブで詳細な接続設定を定義します。（ただし、ほとんどの場合、これらの設定は必要ありません。）
3. {oauthschemes ? `${oauthschemes} で認証する場合は、` : ""}**{datasource} への接続**をクリックして{pageTitle} アカウントに接続します。
4. **作成およびテスト**をクリックして接続を作成します。

## 変更データキャプチャおよび変更の追跡の設定

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

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

<Note>これらのメソッドの両方がテーブルで有効になっている場合、{siteNameShort} はCDC を使用します。</Note>

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

* CDC がSQL Server データベースで有効になっていること（[{siteName} 変更データキャプチャの有効化](#sitename-変更データキャプチャの有効化)セクションの[ステップ1](#step1) を参照してください）。
* SQL Server エージェントが起動していること。
* あなたがデータベースの`db_owner` 固定データベースロールのメンバーであること。

### {siteName} 変更データキャプチャの有効化

1. 次のステートメントを送信して、データベースで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 
   ```
2. {siteNameShort} でSQL Server データソースでジョブを作成し、**変更データキャプチャ**オプションを選択します。

### {siteName} 変更の追跡の有効化

1. <a name="step1" />次のステートメントを送信して、データベースの変更の追跡を有効化します：

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

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

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

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

   <Note>変更の追跡を使用するには、各テーブルに少なくとも1つの主キーが必要です。</Note>

2. {siteNameShort} でSQL Server データソースでジョブを作成し、**変更データキャプチャ**オプションを選択します。

### スキーマの変更

変更の追跡を使用すると、{siteNameShort} は、ソーステーブル構造に変更（カラムの追加やデータ型の変更など）が加えられたときに、同期先テーブルを自動的に更新します。CDC を使用すると、SQL Server は新しいカラムを自動的に追跡しません。そのため、新しいCDC インスタンスを作成し、古いインスタンスを削除する必要があります。このアクションにより、{siteNameShort} のテーブルのフルリフレッシュがトリガーされます。

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

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

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

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

## Always Encrypted Support

{siteName} connects to {datasource} sources by using the CData JDBC driver. The JDBC driver supports `Always Encrypted` columns, which enables {siteNameShort} to read data from columns that use client-side encryption.

When {siteNameShort} 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.

## 詳細について

<CommonDatasourceMoreInformation datasource={datasource} advancedurl={advancedurl} siteName={siteName} driverVersion={driverVersion} />
