メモリ最適化テーブル サブスクライバーへのレプリケーション
適用対象: SQL Server Azure SQL Managed Instance
スナップショットとトランザクション レプリケーション サブスクライバーとして機能するテーブルは、ピア ツー ピア トランザクション レプリケーションを除き、メモリ最適化テーブルとして構成できます。 その他のレプリケーション構成はメモリ最適化テーブルとは互換性がありません。 この機能は、SQL Server 2016 (13.x) 以降で使用できます。
必要な 2 つの構成
メモリ最適化テーブルへのレプリケーションがサポートされるように、サブスクライバー データベースを構成する
sp_addsubscription (Transact-SQL) または sp_changesubscription (Transact-SQL) を使用して、@memory_optimized プロパティを true に設定します。
メモリ最適化テーブルへのレプリケーションがサポートされるように、アーティクルを構成する
sp_addarticle (Transact-SQL) または sp_changearticle (Transact-SQL) を使用して、アーティクルに
@schema_option = 0x40000000000
オプションを設定します。
メモリ最適化テーブルをサブスクライバーとして構成するには
トランザクション パブリケーションを作成します。 詳しくは、「 パブリケーションを作成」をご覧ください。
パブリケーションにアーティクルを追加します。 詳しくは、「 アーティクルを定義」をご覧ください。
Transact-SQL を使用して構成している場合は、sp_addarticle ストアド プロシージャの @schema_option パラメーターを
0x40000000000 に設定します。[アーティクルのプロパティ] ウィンドウで [Enable Memory optimization] (メモリ最適化を有効にする) を trueに設定します。
スナップショット エージェント ジョブを起動して、このパブリケーションの初期スナップショットを生成します。 詳しくは、「 初期スナップショットの作成および適用」をご覧ください。
ここで、新しいサブスクリプションを作成します。 サブスクリプションの新規作成ウィザード で [Memory Optimized Subscription] (メモリ最適化サブスクリプション) を trueに設定します。
これでメモリ最適化テーブルはパブリッシャーから更新を受け取り始めます。
既存のトランザクション レプリケーションを再構成する
Management Studio のサブスクリプションのプロパティに移動して、[Memory Optimized Subscription] (メモリ最適化サブスクリプション) を true に設定します。 サブスクリプションを再初期化するまで変更は適用されません。
Transact-SQL を使用して構成している場合は、sp_addsubscription ストアド プロシージャの新しい @memory_optimized パラメーターを true に設定します。
Management Studio でパブリケーションのアーティクルのプロパティに移動して、[Enable Memory optimization] (メモリ最適化を有効にする) を true に設定します。
Transact-SQL を使用して構成している場合は、sp_addarticle ストアド プロシージャの @schema_option パラメーターを
0x40000000000 に設定します。クラスター化インデックスは、メモリ最適化テーブルでサポートされていません。 レプリケーションにこれを処理させるには、変換先で非クラスター化インデックスに変換します。そのためには、 [Convert clustered index to nonclustered for memory optimized article] (クラスター化インデックスをメモリ最適化アーティクル向けに非クラスター化インデックスに変換する) を true に設定します。
Transact-SQL を使用して構成している場合は、sp_addarticle ストアド プロシージャの @schema_option パラメーターを 0x0000080000000000 に設定します。
スナップショットを再生成します。
サブスクリプションを再初期化します。
解説と制限事項
一方向トランザクション レプリケーションのみがサポートされています。 ピア ツー ピア トランザクション レプリケーションはサポートされていません。
メモリ最適化テーブルをパブリッシュすることはできません。
ディストリビューターのレプリケーション テーブルをメモリ最適化テーブルとして構成することはできません。
マージ レプリケーションにメモリ最適化テーブルを含めることはできません。
サブスクライバーで、トランザクション レプリケーションにかかわるテーブルをメモリ最適化テーブルとして構成できますが、サブスクライバーのテーブルはメモリ最適化テーブルの要件を満たす必要があります。 この場合の制限事項は次のとおりです。
サブスクライバーのメモリ最適化テーブルにレプリケートされるテーブルは、メモリ最適化テーブルに使用できるデータ型に制限されます。 詳細については、「 サポートされるデータ型」を参照してください。
メモリ最適化テーブルでは、すべての Transact-SQL 機能がサポートされているわけではありません。 詳細については、「インメモリ OLTP でサポートされていない Transact-SQL の構造」を参照してください。
スキーマ ファイルの変更
メモリ最適化テーブルのオプション
DURABILITY = SCHEMA_AND_DATA
を使用する場合、テーブルには非クラスター化主キー インデックスが必要です。ANSI_PADDING は ON にする必要があります。