メモリ最適化テーブル サブスクライバーへのレプリケーション

適用対象: SQL ServerAzure SQL Managed Instance

スナップショットとトランザクション レプリケーション サブスクライバーとして機能するテーブルは、ピア ツー ピア トランザクション レプリケーションを除き、メモリ最適化テーブルとして構成できます。 その他のレプリケーション構成はメモリ最適化テーブルとは互換性がありません。 この機能は、SQL Server 2016 (13.x) 以降で使用できます。

必要な 2 つの構成

メモリ最適化テーブルをサブスクライバーとして構成するには

  1. トランザクション パブリケーションを作成します。 詳しくは、「 パブリケーションを作成」をご覧ください。

  2. パブリケーションにアーティクルを追加します。 詳しくは、「 アーティクルを定義」をご覧ください。

    Transact-SQL を使用して構成している場合は、sp_addarticle ストアド プロシージャの @schema_option パラメーターを
    0x40000000000 に設定します。

  3. [アーティクルのプロパティ] ウィンドウで [Enable Memory optimization] (メモリ最適化を有効にする) を trueに設定します。

  4. スナップショット エージェント ジョブを起動して、このパブリケーションの初期スナップショットを生成します。 詳しくは、「 初期スナップショットの作成および適用」をご覧ください。

  5. ここで、新しいサブスクリプションを作成します。 サブスクリプションの新規作成ウィザード[Memory Optimized Subscription] (メモリ最適化サブスクリプション) を trueに設定します。

これでメモリ最適化テーブルはパブリッシャーから更新を受け取り始めます。

既存のトランザクション レプリケーションを再構成する

  1. Management Studio のサブスクリプションのプロパティに移動して、[Memory Optimized Subscription] (メモリ最適化サブスクリプション) を true に設定します。 サブスクリプションを再初期化するまで変更は適用されません。

    Transact-SQL を使用して構成している場合は、sp_addsubscription ストアド プロシージャの新しい @memory_optimized パラメーターを true に設定します。

  2. Management Studio でパブリケーションのアーティクルのプロパティに移動して、[Enable Memory optimization] (メモリ最適化を有効にする) を true に設定します。

    Transact-SQL を使用して構成している場合は、sp_addarticle ストアド プロシージャの @schema_option パラメーターを
    0x40000000000 に設定します。

  3. クラスター化インデックスは、メモリ最適化テーブルでサポートされていません。 レプリケーションにこれを処理させるには、変換先で非クラスター化インデックスに変換します。そのためには、 [Convert clustered index to nonclustered for memory optimized article] (クラスター化インデックスをメモリ最適化アーティクル向けに非クラスター化インデックスに変換する) を true に設定します。

    Transact-SQL を使用して構成している場合は、sp_addarticle ストアド プロシージャの @schema_option パラメーターを 0x0000080000000000 に設定します。

  4. スナップショットを再生成します。

  5. サブスクリプションを再初期化します。

解説と制限事項

一方向トランザクション レプリケーションのみがサポートされています。 ピア ツー ピア トランザクション レプリケーションはサポートされていません。

メモリ最適化テーブルをパブリッシュすることはできません。

ディストリビューターのレプリケーション テーブルをメモリ最適化テーブルとして構成することはできません。

マージ レプリケーションにメモリ最適化テーブルを含めることはできません。

サブスクライバーで、トランザクション レプリケーションにかかわるテーブルをメモリ最適化テーブルとして構成できますが、サブスクライバーのテーブルはメモリ最適化テーブルの要件を満たす必要があります。 この場合の制限事項は次のとおりです。

  • サブスクライバーのメモリ最適化テーブルにレプリケートされるテーブルは、メモリ最適化テーブルに使用できるデータ型に制限されます。 詳細については、「 サポートされるデータ型」を参照してください。

  • メモリ最適化テーブルでは、すべての Transact-SQL 機能がサポートされているわけではありません。 詳細については、「インメモリ OLTP でサポートされていない Transact-SQL の構造」を参照してください。

スキーマ ファイルの変更

  • メモリ最適化テーブルのオプション DURABILITY = SCHEMA_AND_DATA を使用する場合、テーブルには非クラスター化主キー インデックスが必要です。

  • ANSI_PADDING は ON にする必要があります。