適用対象:SQL Server
Azure SQL Managed Instance
スナップショットやトランザクションレプリケーションのサブスクライバーとして機能するテーブルを、ピアツーピアのトランザクションレプリケーションを除き、メモリ最適化テーブルとして設定できます。 メモリ最適化テーブルは他のレプリケーション構成とは互換性がありません。 この機能はSQL Server 2016(13.x)から利用可能になります。
必要な 2 つの構成
メモリ最適化テーブルへのレプリケーションがサポートされるように、サブスクライバー データベースを構成する
@memory_optimizedプロパティをsp_addsubscription(Transact-SQL)またはsp_changesubscription(Transact-SQL)を使ってtrueに設定します。
メモリ最適化テーブルへのレプリケーションがサポートされるように、アーティクルを構成する
@schema_option = 0x40000000000または sp_changearticle (Transact-SQL) を使用して、アーティクルに オプションを設定します。
メモリ最適化テーブルをサブスクライバーとして構成するには
トランザクション パブリケーションを作成します。 詳しくは、「 パブリケーションを作成」をご覧ください。
パブリケーションにアーティクルを追加します。 詳しくは、「 アーティクルを定義」をご覧ください。
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 に設定します。
スナップショットを再生成します。
サブスクリプションを再初期化します。
発言と制限事項
一方向トランザクション レプリケーションのみがサポートされています。 ピアツーピアのトランザクションレプリケーションはサポートされていません。
メモリ最適化されたテーブルを公開することはできません。
ディストリビュータ上のレプリケーションテーブルをメモリ最適化テーブルとして設定することはできません。
マージレプリケーションにはメモリ最適化されたテーブルを含めることはできません。
サブスクライバー側では、トランザクションレプリケーションに関わるテーブルをメモリ最適化テーブルとして設定できますが、サブスクライバーテーブルはメモリ最適化テーブルの要件を満たす必要があります。 この要件には以下の制限が課されます:
サブスクライバーのメモリ最適化テーブルにレプリケートされるテーブルは、メモリ最適化テーブルに使用できるデータ型に制限されます。 詳細については、「In-Memory OLTP でサポートされているデータ型」を参照してください。
メモリ最適化テーブルでは、すべての Transact-SQL 機能がサポートされているわけではありません。 詳細については、「インメモリ OLTP でサポートされていない Transact-SQL の構造」を参照してください。
スキーマ ファイルの変更
メモリ最適化テーブルオプション
DURABILITY = SCHEMA_AND_DATAを使用する場合、テーブルはクラスタ化されていないプライマリキーインデックスを持つ必要があります。ANSI_PADDINGは、ONである必要があります。