パーティション テーブルとパーティション インデックスのレプリケート
大きなテーブルやインデックスをパーティション分割すると、データのサブセットに対するアクセスや管理を迅速かつ効率的に行うと同時に、データ コレクションの整合性を維持することができるので、大きなテーブルやインデックスを管理しやすくなります。詳細については、「パーティション テーブルとパーティション インデックス」を参照してください。レプリケーションでは、パーティション テーブルとパーティション インデックスを扱う方法を指定するプロパティ セットによって、パーティション分割をサポートします。
トランザクション レプリケーションおよびマージ レプリケーションのアーティクルのプロパティ
次の表に、データのパーティション分割に使用されるオブジェクトを示します。
オブジェクト |
作成に使用するステートメント |
---|---|
パーティション テーブルまたはパーティション インデックス |
CREATE TABLE または CREATE INDEX |
パーティション関数 |
CREATE PARTITION FUNCTION |
パーティション構成 |
CREATE PARTITION SCHEME |
パーティション分割に関連するプロパティの最初のセットは、パーティション分割するオブジェクトをサブスクライバにコピーするかどうかを指定するアーティクルのスキーマ オプションです。これらのスキーマ オプションは次の方法で設定できます。
パブリケーションの新規作成ウィザードの [アーティクルのプロパティ] ページ、または [パブリケーションのプロパティ] ダイアログ ボックス。上記の表に示したオブジェクトをコピーするには、[テーブル分割構成のコピー] プロパティと [インデックス分割構成のコピー] プロパティに、値 true を指定します。[アーティクルのプロパティ] ページへのアクセス方法については、「パブリケーションとアーティクルのプロパティを表示および変更する方法 (SQL Server Management Studio)」を参照してください。
次のいずれかのストアド プロシージャの schema_option パラメータの使用。
トランザクション レプリケーションの sp_addarticle または sp_changearticle
マージ レプリケーションの sp_addmergearticle または sp_changemergearticle
上記の表に示したオブジェクトをコピーするには、適切なスキーマ オプション値を指定します。スキーマ オプションを指定する方法については、「スキーマ オプションを指定する方法 (レプリケーション Transact-SQL プログラミング)」を参照してください。
レプリケーションでは、初期同期中にオブジェクトがサブスクライバにコピーされます。パーティション構成で PRIMARY 以外のファイル グループを使用する場合、そのファイル グループは初期同期の前にサブスクライバに存在している必要があります。
サブスクライバが初期化された後、データ変更がサブスクライバに反映され、適切なパーティションに適用されます。ただし、パーティション構成に対する変更はサポートされていません。トランザクション レプリケーションとマージ レプリケーションでは、ALTER PARTITION FUNCTION、ALTER PARTITION SCHEME、ALTER INDEX の REBUILD WITH PARTITION ステートメントはサポートされません。ALTER TABLE の SWITCH PARTITION コマンドは、マージ レプリケーションではサポートされませんが、トランザクション レプリケーションではサポートされます。詳細については、次のセクションを参照してください。
レプリケーションによるパーティション切り替えのサポート
テーブル分割の主な利点の 1 つは、パーティション間でデータのサブセットをすばやく効率的に移動できることです。データは SWITCH PARTITION コマンドを使用して移動します。詳細については、「パーティションの切り替えを使用した効率的なデータの転送」を参照してください。既定では、テーブルのレプリケーションが有効な場合、SWITCH PARTITION 操作は次の理由でブロックされます。
パブリッシャに存在するテーブルを移動元または移動先としてデータを移動する場合に、そのデータがサブスクライバに存在しないと、パブリッシャとサブスクライバの間で不整合が発生します。この問題は、一般に、ステージング テーブルにかかわるデータの移動で発生します。
サブスクライバにパブリッシャとは異なるパーティション テーブルの定義がある場合、ディストリビューション エージェントが変更をサブスクライバに適用しようとすると失敗します。SQL Server 2000 はパーティション テーブルをサポートしていないため、これは SQL Server 2000 サブスクライバでも発生する問題です。
このような問題が発生する可能性はありますが、トランザクション レプリケーションでパーティション切り替えを有効にすることができます。パーティション切り替えを有効にする前に、パーティション切り替えに関連するすべてのテーブルがパブリッシャとサブスクライバに存在し、テーブル定義およびパーティション定義が同じであることを確認してください。
パーティション切り替えの有効化
トランザクション パブリケーションの次のプロパティを使用すると、レプリケーション環境でのパーティション切り替えの動作を制御できます。
@allow_partition_switch を true に設定すると、パブリケーション データベースに対して SWITCH PARTITION を実行できます。
@replicate_partition_switch は、SWITCH PARTITION DDL ステートメントをサブスクライバにレプリケートするかどうかを決定します。このオプションは、@allow_partition_switch が true に設定されている場合にのみ有効です。
これらのプロパティは、パブリケーションの作成時に sp_addpublication を使用するか、パブリケーションの作成後に sp_changepublication を使用することによって設定できます。既に述べたとおり、マージ レプリケーションではパーティション切り替えがサポートされません。マージ レプリケーションが有効になっているテーブルで SWITCH PARTITION を実行するには、パブリケーションからテーブルを削除します。