Gérer les partitions d’une publication de fusion avec des filtres paramétrables

S’applique à :SQL Server

Cette rubrique explique comment gérer les partitions d’une publication de fusion avec des filtres paramétrables dans SQL Server à l’aide de SQL Server Management Studio, Transact-SQL ou Replication Management Objects (RMO). Les filtres de lignes paramétrables peuvent être utilisés pour générer des partitions qui ne se chevauchent pas. Ces partitions peuvent être restreintes afin qu'un seul abonnement puisse recevoir une partition donnée. Dans ces cas, un grand nombre d'abonnés se traduit par un nombre élevé de partitions, ce qui requiert ensuite un nombre égal d'instantanés partitionnés. Pour plus d'informations, voir Parameterized Row Filters.

Dans cette rubrique

Avant de commencer

Recommandations

  • Si vous créez un script de la topologie de réplication (ce qui est recommandé), les scripts de publication contiennent les appels de procédures stockées pour créer des partitions de données. Le script fournit une référence pour les partitions créées et un moyen permettant de recréer si nécessaire une ou plusieurs partitions. Pour plus d'informations, voir Scripting Replication.

  • Lorsqu'une publication a paramétré des filtres qui génèrent des abonnements avec des partitions ne se chevauchant pas, et si un abonnement particulier est perdu et doit être recréé, vous devez effectuer les opérations suivantes : supprimez la partition à laquelle s'abonner, recréez l'abonnement, puis recréez la partition. Pour plus d'informations, voir Parameterized Row Filters. La réplication génère des scripts de création pour les partitions d'Abonné existantes lors de la génération d'un script de création de publication. Pour plus d'informations, voir Scripting Replication.

Utilisation de SQL Server Management Studio

Gérer les partitions sur la page Partitions de données de la boîte de dialogue Propriétés de publication - <Publication> . Pour plus d'informations sur l'accès à cette boîte de dialogue, consultez Afficher et modifier les propriétés d’un serveur de publication. Sur cette page, vous pouvez : créer et supprimer des partitions, autoriser des Abonnés à initier la génération et la remise d'instantanés, générer des instantanés pour une ou plusieurs partitions et nettoyer des instantanés.

Pour créer une partition

  1. Dans la page Partitions de données de la boîte de dialogue Propriétés de publication - <Publication> , cliquez sur Ajouter.

  2. Dans la boîte de dialogue Ajouter une partition de données , entrez une valeur pour la valeur HOST_NAME() et/ou SUSER_SNAME() associée à la valeur que vous voulez créer.

  3. En option, spécifiez une planification pour l'actualisation des instantanés :

    1. Sélectionnez Planifier l'Agent d'instantané pour l'exécution de cette partition à l'heure ou aux heures suivantes.

    2. Acceptez la planification par défaut pour l'actualisation des instantanés, ou cliquez sur Modifier pour spécifier une autre planification.

  4. Cliquez sur OK.

Pour supprimer une partition

  1. Sur la page Partitions de données , sélectionnez une partition dans la grille.

  2. Cliquez sur Supprimer.

Pour permettre aux Abonnés d'initier la génération et la remise d'instantanés

  1. Sur la page Partitions de données , sélectionnez Définir automatiquement une partition et générer un instantané si nécessaire lorsqu'un nouvel abonné essaie de se synchroniser.

  2. Cliquez sur OK.

Pour générer un instantané pour une partition

  1. Sur la page Partitions de données , sélectionnez une partition dans la grille.

  2. Cliquez sur Générer les instantanés sélectionnés maintenant.

Pour nettoyer un instantané pour une partition

  1. Sur la page Partitions de données , sélectionnez une partition dans la grille.

  2. Cliquez sur Nettoyer les instantanés existants.

Utilisation de Transact-SQL

Pour mieux gérer une publication avec des filtres paramétrables, vous pouvez énumérer par programmation les partitions existantes à l'aide de procédures stockées de réplication. Vous pouvez également créer et supprimer des partitions existantes. Vous pouvez obtenir les informations suivantes sur les partitions existantes :

Tandis que la deuxième partie de l'instantané bipartite peut être généré à la demande lors de l'initialisation d'un nouvel abonnement, les procédures suivantes permettent de contrôler comment cet instantané est généré et de le prégénérer dans les cas les plus pratiques. Pour plus d'informations, voir Snapshots for Merge Publications with Parameterized Filters.

Pour consulter les informations sur les partitions existantes

  1. Sur le serveur de publication sur la base de données de publication, exécutez sp_helpmergepartition (Transact-SQL). Spécifiez le nom de la publication pour @publication. (Facultatif) Spécifiez @suser_sname ou @host_name pour retourner uniquement les informations basées sur un critère de filtre unique.

Pour définir une nouvelle partition et générer un nouvel instantané partitionné

  1. Sur le serveur de publication de la base de données de publication, exécutez sp_addmergepartition (Transact-SQL). Spécifiez le nom de la publication pour @publication et la valeur paramétrable qui définit la partition pour l’un des éléments suivants :

  2. Créez et initialisez l'instantané paramétrable de cette nouvelle partition. Pour plus d'informations, voir Créer un instantané d’une publication de fusion avec des filtres paramétrés.

Pour supprimer une partition

  1. Sur le serveur de publication sur la base de données de publication, exécutez sp_dropmergepartition (Transact-SQL). Spécifiez le nom de la publication pour @publication et la valeur paramétrable qui définit la partition pour l’un des éléments suivants :

    Le travail d'instantané et les fichiers d'instantané de la partition sont également supprimés.

Utilisation d'objets RMO (Replication Management Objects)

Pour mieux gérer une publication avec les filtres paramétrables, vous pouvez par programmation créer, énumérer ou supprimer les partitions d'Abonné, en utilisant les objets RMO (Replication Management Objects). Pour plus d'informations sur la création de partitions d'Abonné, consultez Créer un instantané d’une publication de fusion avec des filtres paramétrés. Vous pouvez obtenir les informations suivantes sur les partitions existantes :

  • la valeur et la fonction de filtrage sur lesquelles la partition est basée ;

  • le nom du travail qui génère un instantané paramétrable pour l'Abonné ;

  • la dernière fois qu'un travail d'instantané paramétrable a été exécuté ;

Pour consulter les informations sur les partitions existantes

  1. Créez une connexion au serveur de publication en utilisant la classe ServerConnection .

  2. Créez une instance de la classe MergePublication. Définissez les propriétés Name et DatabaseName de la publication et définissez la propriété ConnectionContext avec la valeur ServerConnection créée au cours de l'étape 1.

  3. Appelez la méthode LoadProperties pour obtenir les propriétés de l'objet. Si cette méthode retourne false, soit les propriétés de la publication ont été définies de manière incorrecte à l'étape 2, soit la publication n'existe pas.

  4. Appelez la méthode EnumMergePartitions et passez le résultat à un tableau d'objets MergePartition .

  5. Pour chaque objet MergePartition du tableau, récupérez les propriétés dignes d'intérêt.

Pour supprimer les partitions existantes

  1. Créez une connexion au serveur de publication en utilisant la classe ServerConnection .

  2. Créez une instance de la classe MergePublication. Définissez les propriétés Name et DatabaseName de la publication et définissez la propriété ConnectionContext avec la valeur ServerConnection créée au cours de l'étape 1.

  3. Appelez la méthode LoadProperties pour obtenir les propriétés de l'objet. Si cette méthode retourne false, soit les propriétés de la publication ont été définies de manière incorrecte à l'étape 2, soit la publication n'existe pas.

  4. Appelez la méthode EnumMergePartitions et passez le résultat à un tableau d'objets MergePartition .

  5. Pour chaque objet MergePartition du tableau, déterminez si la partition doit être supprimée. Cette décision repose habituellement sur la valeur de la propriété DynamicFilterLogin ou de la propriété DynamicFilterHostName .

  6. Appelez la méthode RemoveMergePartition sur l'objet MergePublication à partir de l'étape 2. Passez l'objet MergePartition créé à l'étape 5.

  7. Répétez l'étape 6 pour chaque partition supprimée.

Voir aussi

Filtres de lignes paramétrés
Instantanés des publications de fusion avec des filtres paramétrés