> ## 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 CommonDatasourceAuthenticate = () => {
  return <p>コネクタを追加したら、必要なプロパティを設定します。</p>;
};

export const CommonDatasourceCompleteConnectionOauth = ({datasource = "the data source", title = "the connector", oauthschemes = "", start = 2}) => {
  return <ol start={start}>
      <li><strong>Advanced</strong> タブで詳細な接続設定を定義します。（ただし、ほとんどの場合、これらの設定は不要です。）</li>
      <li>{oauthschemes ? <>{oauthschemes} で認証する場合は、</> : <></>}<strong>{datasource} への接続</strong>をクリックして {title} アカウントに接続します。</li>
      <li><strong>作成およびテスト</strong>をクリックして接続を作成します。</li>
    </ol>;
};

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} への認証

<CommonDatasourceAuthenticate />

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

* [**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：** {datasource} への認証に使用するユーザー名を入力。
* **Password：** {datasource} への認証に使用するパスワードを入力。

### NTLM

NTLM ユーザー資格情報で接続するには、次のプロパティを指定します：

* **Auth Scheme：** **NTLM** を選択。
* **User：** {datasource} への認証に使用するユーザー名を入力。
* **Password：** {datasource} への認証に使用するパスワードを入力。
* （オプション）**Domain：** Windows（NTLM）セキュリティログイン用のドメイン名を入力。
* （オプション）**NTLM Version：** 使用したいNTLM バージョンを選択。デフォルトバージョンは**1**です。

### Kerberos

Kerberos 資格情報で接続するには、次のプロパティを指定します：

* **Auth Scheme：** **Kerberos** を選択。
* **User：** {datasource} への認証に使用するユーザー名を入力。
* **Password：** {datasource} への認証に使用するパスワードを入力。
* **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** プロパティ（オプション）には、{datasource} に接続する際に接続するデフォルトのデータベースを入力します。

<div style={{marginTop: "-1rem"}}>
  <CommonDatasourceCompleteConnectionOauth datasource={datasource} title={pageTitle} oauthschemes={oauthschemes} />
</div>

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

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

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

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

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

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

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

* CDC が{datasource} データベースで有効になっていること。
* {datasource} エージェントが起動していること。
* あなたがデータベースの`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 
```

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

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

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

### スキーマの変更

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

#### 変更データキャプチャ

CDC を使用する場合、{siteNameShort} はスキーマ変更後も{datasource} CDC キャプチャインスタンス間のシームレスな移行をサポートし、データ損失やフルリフレッシュなしにレプリケーションを継続できます。

{datasource} は既存のキャプチャインスタンスに新しいカラムを追跡しないため、スキーマ変更は次の手順で行います：

1. ソーステーブルのスキーマを変更します。
2. 新しい`@capture_instance` 名を指定して`sys.sp_cdc_enable_table` ストアドプロシージャを実行し、新しいCDC キャプチャインスタンスを作成します。{datasource} は古いインスタンスと新しいインスタンスを並列で実行します。

   次のCDC ジョブ実行の開始時に、{siteNameShort} は新しいキャプチャインスタンスを検出し、新しいインスタンスの開始ログシーケンス番号（`min_lsn`）までのすべての変更が処理されるまで、元のインスタンスからの読み取りを続けます。その後、{siteNameShort} は自動的に新しいキャプチャインスタンスに切り替え、格納されているCDC メタデータを更新します。

{siteNameShort} が移行を完了したら、`sys.sp_cdc_disable_table` を実行して古いキャプチャインスタンスを安全に削除できます。

この機能は、標準CDC レプリケーションおよび[ヒストリーモード](../../getting-started/features#history-mode)を有効にしたCDC レプリケーションでサポートされています。

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

#### 変更の追跡

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

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

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

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

差分レプリケーションの設定方法の詳細は、[差分レプリケーション](../../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} />
