Répliquer des tables et des index partitionnésReplicate Partitioned Tables and Indexes

S’APPLIQUE À : ouiSQL Server ouiAzure SQL Database (Managed Instance uniquement) nonAzure Synapse Analytics (SQL DW) nonParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database (Managed Instance only) noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Le partitionnement facilite la gestion des tables et des index de grande taille, car il permet de gérer et d'accéder rapidement et efficacement à des sous-ensembles de données, tout en conservant l'intégrité d'une collecte de données.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. Pour plus d'informations, consultez Partitioned Tables and Indexes.For more information, see Partitioned Tables and Indexes. La réplication prend en charge le partitionnement en fournissant un ensemble de propriétés qui indiquent comment les tables et les index partitionnés doivent être traités.Replication supports partitioning by providing a set of properties that specify how partitioned tables and indexes should be treated.

Propriétés d'article pour la réplication transactionnelle et de fusionArticle Properties for Transactional and Merge Replication

Le tableau suivant répertorie les objets utilisés pour partitionner des données.The following table lists the objects that are used to partition data.

ObjectObject Créé en utilisantCreated by using
Table ou index partitionnéPartitioned table or index CREATE TABLE ou CREATE INDEXCREATE TABLE or CREATE INDEX
Fonction de partitionPartition function CREATE PARTITION FUNCTIONCREATE PARTITION FUNCTION
Schéma de partitionPartition scheme CREATE PARTITION SCHEMECREATE PARTITION SCHEME

Le premier ensemble de propriétés en rapport avec le partitionnement correspond aux options de schéma d'article qui déterminent si le partitionnement d'objets doit être copié vers l'Abonné.The first set of properties related to partitioning are the article schema options that determine whether partitioning objects should be copied to the Subscriber. Ces options de schéma peuvent être définies de plusieurs façons :These schema options can be set in the following ways:

  • Sur la page Propriétés de l'article de l'Assistant Nouvelle publication ou la boîte de dialogue Propriétés de la publication.In the Article Properties page of the New Publication Wizard or the Publication Properties dialog box. Pour copier les objets répertoriés dans le tableau précédent, spécifiez la valeur true pour les propriétés Copier les schémas de partition de table et Copier les schémas de partition d'index.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. Pour plus d’informations sur la façon d’accéder à la page Propriétés de l’article, consultez Afficher et modifier des propriétés de publication.For information about how to access the Article Properties page, see View and Modify Publication Properties.

  • En utilisant le paramètre schema_option de l'une des procédures stockées suivantes :By using the schema_option parameter of one of the following stored procedures:

    Pour copier les objets répertoriés dans le tableau précédent, spécifiez les valeurs d'options de schéma appropriées.To copy the objects listed in the previous table, specify the appropriate schema option values. Pour plus d'informations sur la spécification d'options de schéma, consultez Specify Schema Options.For information about how to specify schema options, see Specify Schema Options.

La réplication copie les objets vers l'Abonné pendant la synchronisation initiale.Replication copies objects to the Subscriber during the initial synchronization. Si le schéma de partition utilise des groupes de fichiers autres que le groupe de fichiers PRIMARY, ces groupes de fichiers doivent exister sur l'Abonné avant la synchronisation initiale.If the partition scheme uses filegroups other than the PRIMARY filegroup, those filegroups must exist on the Subscriber before the initial synchronization.

Après avoir initialisé l'Abonné, les modifications de données sont propagées à l'Abonné et appliquées aux partitions appropriées.After the Subscriber is initialized, data changes are propagated to the Subscriber and applied to the appropriate partitions. Toutefois, les modifications apportées au schéma de partition ne sont pas prises en charge.However, changes to the partition scheme are not supported. La réplication transactionnelle et de fusion ne prend pas en charge la réplication des commandes suivantes : ALTER PARTITION FUNCTION, ALTER PARTITION SCHEME ou l’instruction REBUILD WITH PARTITION d’ALTER INDEX.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. Les modifications associées ne sont pas automatiquement répliquées sur l’Abonné.The changes associated with them will not be automatically replicated to the Subscriber. Il incombe à l'utilisateur d'apporter des modifications similaires manuellement sur l'Abonné.It is the responsibility of the user to make similar changes manually at the Subscriber.

Prise en charge de la réplication pour le basculement de partitionReplication Support for Partition Switching

La possibilité de déplacer rapidement et efficacement des sous-ensembles de données entre des partitions constitue l'un des principaux avantages du partitionnement de table.One of the key benefits of table partitioning is the ability to quickly and efficiently move subsets of data between partitions. Les données sont déplacées à l'aide de la commande SWITCH PARTITION.Data is moved by using the SWITCH PARTITION command. Par défaut, lorsqu'une table est activée pour la réplication, les opérations SWITCH PARTITION sont bloquées pour les raisons suivantes :By default, when a table is enabled for replication, SWITCH PARTITION operations are blocked for the following reasons:

  • Si les données sont déplacées dans ou hors d'une table qui existe sur le serveur de publication mais pas sur l'Abonné, le serveur de publication et l'Abonné risquent de devenir incohérents entre eux.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. Ce problème se produit généralement lorsque les données sont déplacées dans ou hors d'une table intermédiaire.This problem typically occurs when data is moved into or out of a staging table.

  • Si l'Abonné et le serveur de publication ont des définitions différentes pour la table partitionnée, l'Agent de distribution échouera lorsqu'il tentera d'appliquer des modifications à l'Abonné.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.

Malgré ces problèmes potentiels, le basculement de partition peut être activé pour la réplication transactionnelle.Despite these potential issues, partition switching can be enabled for transactional replication. Avant d'activer le basculement de partition, assurez-vous que toutes les tables impliquées dans cette opération existent sur le serveur de publication et sur l'Abonné, et vérifiez que la définition des tables et de la partition sont identiques.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.

Lorsque des partitions ont exactement le même schéma de partition sur les serveurs de publication et les abonnés, vous pouvez activer allow_partition_switch avec replication_partition_switch pour répliquer uniquement l'instruction de basculement de partition vers l'abonné.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. Vous pouvez également activer allow_partition_switch sans répliquer le DDL.You can also turn on allow_partition_switch without replicating the DDL. Cela s'avère utile lorsque vous souhaitez supprimer des mois antérieurs de la partition tout en conservant la réplication de la partition pendant une autre année à des fins de sauvegarde sur l'abonné.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.

Si vous activez le basculement de partition (sur SQL Server 2008 R2 jusqu’à la version actuelle), vous devrez peut-être également fractionner et fusionner des opérations dans un futur proche.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. Avant d’exécuter une opération de fractionnement ou de fusion sur une table répliquée, vérifiez que la partition en question n’a pas de commandes répliquées en attente.Before executing a split or merge operation on a replicated table ensure that the partition in question does not have any pending replicated commands. Vous devez également vous assurer qu’aucune opération DML n’est exécutée sur la partition pendant les opérations de fractionnement et de fusion.You should also ensure that no DML operations are executed on the partition during the split and merge operations. Si des transactions n’ont pas été traitées par le lecteur de journal ou que des opérations DML sont exécutées sur la partition d’une table répliquée en même temps qu’une opération de fractionnement ou de fusion (sur la même partition), il est possible que l’Agent de lecture du journal fasse l’objet d’une erreur de traitement.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. Pour corriger l'erreur, une réinitialisation de l'abonnement peut s'avérer nécessaire.In order to correct the error, it might require a re-initialization of the subscription.

Avertissement

Vous ne devez pas activer le basculement de partition pour les publications d'égal à égal, en raison de la colonne masquée utilisée pour détecter et résoudre le conflit.You should not enable partition switching for Peer-to-Peer publications, due to the hidden column which is used to detect and resolve conflict.

Activation du basculement de partitionEnabling Partition Switching

Les propriétés suivantes pour les publications transactionnelles permettent aux utilisateurs de contrôler le comportement de l'insertion de partition dans un environnement répliqué :The following properties for transactional publications enable users to control the behavior of partition switching in a replicated environment:

  • @allow_partition_switch, quand la valeur spécifiée est true, SWITCH PARTITION peut être exécuté sur la base de données de publication.@allow_partition_switch, when set to true, SWITCH PARTITION can be executed against the publication database.

  • @replicate_partition_switch détermine si l’instruction SWITCH PARTITION DDL doit être répliquée sur les Abonnés.@replicate_partition_switch determines whether the SWITCH PARTITION DDL statement should be replicated to Subscribers. Cette option est valide uniquement quand @allow_partition_switch a la valeur true.This option is valid only when @allow_partition_switch is set to true.

Vous pouvez définir ces propriétés en utilisant sp_addpublication lors de la création de la publication, ou en utilisant sp_changepublication après la création de la publication.You can set these properties by using sp_addpublication when the publication is created, or by using sp_changepublication after the publication is created. Comme indiqué précédemment, la réplication de fusion ne prend pas en charge le basculement de partition.As noted earlier, merge replication does not support partition switching. Pour exécuter SWITCH PARTITION sur une table qui est activée pour la réplication de fusion, supprimez la table de la publication.To execute SWITCH PARTITION on a table that is enabled for merge replication, remove the table from the publication.

Voir aussiSee Also

Publier des données et des objets de base de donnéesPublish Data and Database Objects