Réplication de tables et d'index partitionnés

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 collection de données. Pour plus d'informations, consultez Tables et index partitionnés. 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.

Propriétés d'article pour la réplication transactionnelle et de fusion

Le tableau suivant répertorie les objets utilisés pour partitionner des données.

Objet

Créé en utilisant

Table ou index partitionné

CREATE TABLE ou CREATE INDEX

Fonction de partition

CREATE PARTITION FUNCTION

Schéma de partition

CREATE 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é. Ces options de schéma peuvent être définies de plusieurs façons :

La réplication copie les objets vers l'Abonné pendant la synchronisation initiale. 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.

Après avoir initialisé l'Abonné, les modifications de données sont propagées à l'Abonné et appliquées aux partitions appropriées. Toutefois, les modifications apportées au schéma de partition ne sont pas prises en charge. La réplication transactionnelle et de fusion ne prend pas en charge les commandes suivantes : ALTER PARTITION FUNCTION, ALTER PARTITION SCHEME ou l'instruction REBUILD WITH PARTITION d'ALTER INDEX. La réplication de fusion ne prend pas en charge la commande SWITCH PARTITION d'ALTER TABLE, contrairement à la réplication transactionnelle, comme décrit dans la section suivante. La réplication de capture instantanée n'autorise pas les modifications du schéma de partitionnement car la capture instantanée est réinitialisée chaque fois que l'abonné est synchronisé avec la publication.

La réplication transactionnelle et la réplication de fusion prennent en charge un maximum de 1 024 partitions par table ou index.

Prise en charge de la réplication pour le basculement de partition

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. Les données sont déplacées à l'aide de la commande SWITCH PARTITION. Pour plus d'informations, consultez Transfert efficace de données à l'aide du commutateur de partitionnement. 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 :

  • 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. Ce problème se produit généralement lorsque les données sont déplacées dans ou hors d'une table intermédiaire.

  • 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é. Cela est également un problème pour les Abonnés SQL Server 2000, car SQL Server 2000 ne prend pas en charge les tables partitionnées.

Malgré ces problèmes potentiels, le basculement de partition peut être activé pour la réplication transactionnelle. 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.

Lorsque des partitions ont le même schéma de partition sur les serveurs de publication et les Abonnés, vous pouvez activer allow_partition_switch et replication_partition_switch, ce qui réplique uniquement l'instruction de basculement de partition sur l'Abonné. Vous pouvez aussi activer allow_partition_switch sans répliquer la DDL. Cela est utile dans le cas où vous souhaitez regrouper les mois antérieurs hors de la partition, mais conserver la partition répliquée pour une autre année à des fins de sauvegarde sur l'Abonné.

AttentionAttention

Vous ne devez pas activer le basculement de partition pour les publications d'égal à égal, en raison de la colonne masquée qui est utilisée pour détecter et résoudre les conflits.

Activation du basculement de partition

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é :

  • @allow_partition_switch, lorsque la valeur spécifiée est true, SWITCH PARTITION peut être exécuté sur la base de données de publication.

  • @replicate_partition_switch détermine si l'instruction SWITCH PARTITION DDL doit être répliquée sur les Abonnés. Cette option est valide uniquement lorsque @allow_partition_switch a la valeur 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. Comme indiqué précédemment, la réplication de fusion ne prend pas en charge le basculement de partition. Pour exécuter SWITCH PARTITION sur une table qui est activée pour la réplication de fusion, supprimez la table de la publication.