パーティション テーブルとパーティション インデックスのレプリケートReplicate Partitioned Tables and Indexes

適用対象: ○SQL Server XAzure SQL Database XAzure SQL Data Warehouse XParallel Data WarehouseAPPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

大きなテーブルやインデックスをパーティション分割すると、データのサブセットに対するアクセスや管理を迅速かつ効率的に行うと同時に、データ コレクションの整合性を維持することができるので、大きなテーブルやインデックスを管理しやすくなります。Partitioning makes large tables or indexes more manageable because partitioning enables you to manage and access subsets of data quickly and efficiently, and maintain the integrity of a data collection at the same time. 詳細については、「 Partitioned Tables and Indexes」を参照してください。For more information, see Partitioned Tables and Indexes. レプリケーションでは、パーティション テーブルとパーティション インデックスを扱う方法を指定するプロパティ セットによって、パーティション分割をサポートします。Replication supports partitioning by providing a set of properties that specify how partitioned tables and indexes should be treated.

トランザクション レプリケーションおよびマージ レプリケーションのアーティクルのプロパティArticle Properties for Transactional and Merge Replication

次の表に、データのパーティション分割に使用されるオブジェクトを示します。The following table lists the objects that are used to partition data.

ObjectObject 作成に使用するステートメントCreated by using
パーティション テーブルまたはパーティション インデックスPartitioned table or index CREATE TABLE または CREATE INDEXCREATE TABLE or CREATE INDEX
パーティション関数Partition function CREATE PARTITION FUNCTIONCREATE PARTITION FUNCTION
パーティション構成Partition scheme CREATE PARTITION SCHEMECREATE PARTITION SCHEME

パーティション分割に関連するプロパティの最初のセットは、パーティション分割するオブジェクトをサブスクライバーにコピーするかどうかを指定するアーティクルのスキーマ オプションです。The first set of properties related to partitioning are the article schema options that determine whether partitioning objects should be copied to the Subscriber. これらのスキーマ オプションは次の方法で設定できます。These schema options can be set in the following ways:

  • パブリケーションの新規作成ウィザードの [アーティクルのプロパティ] ページ、または [パブリケーションのプロパティ] ダイアログ ボックス。In the Article Properties page of the New Publication Wizard or the Publication Properties dialog box. 上記の表に示したオブジェクトをコピーするには、 [テーブル分割構成のコピー] プロパティと [インデックス分割構成のコピー] プロパティに、値 trueを指定します。To copy the objects listed in the previous table, specify a value of true for the properties Copy table partitioning schemes and Copy index partitioning schemes. [アーティクルのプロパティ] ページへのアクセス方法については、「View and Modify Publication Properties」 (パブリケーション プロパティの表示および変更) を参照してください。For information about how to access the Article Properties page, see View and Modify Publication Properties.

  • 次のいずれかのストアド プロシージャの schema_option パラメーターの使用。By using the schema_option parameter of one of the following stored procedures:

    上記の表に示したオブジェクトをコピーするには、適切なスキーマ オプション値を指定します。To copy the objects listed in the previous table, specify the appropriate schema option values. スキーマ オプションを指定する方法については、「 Specify Schema Options」を参照してください。For information about how to specify schema options, see Specify Schema Options.

レプリケーションでは、初期同期中にオブジェクトがサブスクライバーにコピーされます。Replication copies objects to the Subscriber during the initial synchronization. パーティション構成で PRIMARY 以外のファイル グループを使用する場合、そのファイル グループは初期同期の前にサブスクライバーに存在している必要があります。If the partition scheme uses filegroups other than the PRIMARY filegroup, those filegroups must exist on the Subscriber before the initial synchronization.

サブスクライバーが初期化された後、データ変更がサブスクライバーに反映され、適切なパーティションに適用されます。After the Subscriber is initialized, data changes are propagated to the Subscriber and applied to the appropriate partitions. ただし、パーティション構成に対する変更はサポートされていません。However, changes to the partition scheme are not supported. トランザクション レプリケーションとマージ レプリケーションでは、ALTER PARTITION FUNCTION コマンド、ALTER PARTITION SCHEME コマンド、ALTER INDEX コマンドの REBUILD WITH PARTITION ステートメントのレプリケートはサポートされません。Transactional and merge replication do not support replicating the following commands: ALTER PARTITION FUNCTION, ALTER PARTITION SCHEME, or the REBUILD WITH PARTITION statement of ALTER INDEX. これらに関連付けられた変更は、サブスクライバーに自動的にレプリケートされません。The changes associated with them will not be automatically replicated to the Subscriber. ユーザーがサブスクライバー側で同様の変更を手動で行う必要があります。It is the responsibility of the user to make similar changes manually at the Subscriber.

レプリケーションによるパーティション切り替えのサポートReplication Support for Partition Switching

テーブル分割の主な利点の 1 つは、パーティション間でデータのサブセットをすばやく効率的に移動できることです。One of the key benefits of table partitioning is the ability to quickly and efficiently move subsets of data between partitions. データは SWITCH PARTITION コマンドを使用して移動します。Data is moved by using the SWITCH PARTITION command. 既定では、テーブルのレプリケーションが有効な場合、SWITCH PARTITION 操作は次の理由でブロックされます。By default, when a table is enabled for replication, SWITCH PARTITION operations are blocked for the following reasons:

  • パブリッシャーに存在するテーブルを移動元または移動先としてデータを移動する場合に、そのデータがサブスクライバーに存在しないと、パブリッシャーとサブスクライバーの間で不整合が発生します。If data is moved into or out of a table that exists at the Publisher but does not exist at the Subscriber, the Publisher and Subscriber could become inconsistent with one another. この問題は、一般に、ステージング テーブルにかかわるデータの移動で発生します。This problem typically occurs when data is moved into or out of a staging table.

  • サブスクライバーにパブリッシャーとは異なるパーティション テーブルの定義がある場合、ディストリビューション エージェントが変更をサブスクライバーに適用しようとすると失敗します。If the Subscriber has a different definition for the partitioned table than the Publisher, the Distribution Agent will fail when it tries to apply changes at the Subscriber.

このような問題が発生する可能性はありますが、トランザクション レプリケーションでパーティション切り替えを有効にすることができます。Despite these potential issues, partition switching can be enabled for transactional replication. パーティション切り替えを有効にする前に、パーティション切り替えに関連するすべてのテーブルがパブリッシャーとサブスクライバーに存在し、テーブル定義およびパーティション定義が同じであることを確認してください。Before you enable partition switching, make sure that all tables that are involved in partition switching exist at the Publisher and Subscriber, and make sure that the table and partition definitions are the same.

パブリッシャーとサブスクライバーでパーティションにまったく同じパーティション構成が使用されている場合は、パブリッシャーへのパーティション切り替えステートメントのレプリケートのみを行う allow_partition_switch と共に、 replication_partition_switch を有効にすることができます。When partitions have the exact same partition scheme at the publishers and subscribers you can turn on allow_partition_switch along with replication_partition_switch which will only replicate the partition switch statement to the subscriber. DDL をレプリケートしないで、 allow_partition_switch を有効にすることもできます。You can also turn on allow_partition_switch without replicating the DDL. これは、過去の月をパーティションからロール アウトする一方、バックアップの目的で、レプリケートしたパーティションをサブスクライバーにもう 1 年保持する場合に便利です。This is useful in the case where you want to roll old months out of the partition but keep the replicated partition in place for another year for backup purposes at the subscriber.

SQL Server 2008 R2 から現在のバージョンまででパーティション切り替えを有効にすると、近い将来、分割操作とマージ操作が必要になる可能性があります。If you enable partition switching on SQL Server 2008 R2 through the current version, you might also need split and merge operations in near future. レプリケートされたテーブルでの分割またはマージ操作を実行する前に、該当するパーティションに保留中のレプリケートされたコマンドがないことを確認します。Before executing a split or merge operation on a replicated table ensure that the partition in question does not have any pending replicated commands. 分割操作とマージ操作中にパーティションで DML 操作が実行されないようにする必要もあります。You should also ensure that no DML operations are executed on the partition during the split and merge operations. ログ リーダーが処理していないトランザクションがある場合や、分割操作またはマージ操作中に、レプリケートされたテーブルのパーティションで DML 操作が実行される場合 (同じパーティションに関連する場合)、ログ リーダー エージェントで処理エラーが発生する可能性があります。If there are transactions which the log reader has not processed, or if DML operations are performed on a partition of a replicated table while a split or merge operation is executed (involving the same partition), it could lead to a processing error with log reader agent. このエラーを修正するには、サブスクリプションの再初期化が必要になる場合があります。In order to correct the error, it might require a re-initialization of the subscription.

警告

ピア ツー ピア パブリケーションでは、非表示の列が競合の検出および解決のために使用されるため、パーティション切り替えを有効にしないでください。You should not enable partition switching for Peer-to-Peer publications, due to the hidden column which is used to detect and resolve conflict.

パーティション切り替えの有効化Enabling Partition Switching

トランザクション パブリケーションの次のプロパティを使用すると、レプリケーション環境でのパーティション切り替えの動作を制御できます。The following properties for transactional publications enable users to control the behavior of partition switching in a replicated environment:

  • @allow_partition_switch**を [テーブル分割構成のコピー] に設定すると、パブリケーション データベースに対して SWITCH PARTITION を実行できます。@allow_partition_switch**, when set to true, SWITCH PARTITION can be executed against the publication database.

  • @replicate_partition_switch** は、SWITCH PARTITION DDL ステートメントをサブスクライバーにレプリケートするかどうかを決定します。@replicate_partition_switch** determines whether the SWITCH PARTITION DDL statement should be replicated to Subscribers. このオプションは、 **@allow_partition_switch** が [テーブル分割構成のコピー]」を参照してください。This option is valid only when **@allow_partition_switch** is set to true.

これらのプロパティは、パブリケーションの作成時に sp_addpublication を使用するか、パブリケーションの作成後に sp_changepublication を使用することによって設定できます。You can set these properties by using sp_addpublication when the publication is created, or by using sp_changepublication after the publication is created. 既に述べたとおり、マージ レプリケーションではパーティション切り替えがサポートされません。As noted earlier, merge replication does not support partition switching. マージ レプリケーションが有効になっているテーブルで SWITCH PARTITION を実行するには、パブリケーションからテーブルを削除します。To execute SWITCH PARTITION on a table that is enabled for merge replication, remove the table from the publication.

参照See Also

データとデータベース オブジェクトのパブリッシュPublish Data and Database Objects