sp_mergecleanupmetadata (Transact-SQL)

Doit être utilisé uniquement dans les topologies de réplication qui incluent des serveurs exécutant des versions de Microsoft SQL Server antérieures à SQL Server 2000 Service Pack 1. sp_mergecleanupmetadata permet aux administrateurs de nettoyer les métadonnées des tables système MSmerge_genhistory, MSmerge_contents et MSmerge_tombstone. Cette procédure stockée est exécutée sur le serveur de publication dans la base de données de publication.

Icône Lien de rubriqueConventions de la syntaxe de Transact-SQL

Syntaxe

sp_mergecleanupmetadata [ [ @publication = ] 'publication' ]
    [ , [ @reinitialize_subscriber = ] 'reinitialize_subscriber' ]

Arguments

  • [ @publication=] 'publication'
    Nom de la publication. publication est de type sysname et sa valeur par défaut, %, nettoie les métadonnées de toutes les publications. La publication doit déjà exister si elle est spécifiée de manière explicite.
  • [ @reinitialize_subscriber = ] 'subscriber'
    Indique si l'Abonné doit être réinitialisé. subscriber est de type nvarchar(5), avec une valeur TRUE ou FALSE, sachant que la valeur par défaut est TRUE. Si la valeur est TRUE, les abonnements sont marqués en vue d'être réinitialisés. Si la valeur est FALSE, les abonnements ne sont pas marqués.

Valeurs des codes de retour

0 (succès) ou 1 (échec)

Notes

sp_mergecleanupmetadata doit être utilisée uniquement dans les topologies de réplication qui incluent des serveurs exécutant des versions SQL Server antérieures à SQL Server 2000 Service Pack 1. Les topologies qui incluent uniquement SQL Server 2000 Service Pack 1 ou une version ultérieure doivent utiliser la rétention automatique basée sur le nettoyage des métadonnées. Pour plus d'informations sur le nettoyage des métadonnées, consultez Fonctionnement de la réplication de fusion. Lorsque vous exécutez cette procédure stockée, soyez conscient de l'importance de la croissance nécessaire et potentielle du fichier journal sur l'ordinateur sur lequel la procédure stockée est exécutée.

ms186877.Caution(fr-fr,SQL.90).gifAttention :
Une fois sp_mergecleanupmetadata exécutée, par défaut, tous les abonnements de publication qui ont des métadonnées stockées dans MSmerge_genhistory, MSmerge_contents et MSmerge_tombstone sont marqués en vue d'être réinitialisés, toutes les modifications en attente sur l'abonné sont perdues, et la capture instantanée active est marquée comme obsolète.
ms186877.note(fr-fr,SQL.90).gifRemarque :
S'il existe plusieurs publications sur une base de données et si l'une des publications utilise une période infinie de rétention de publication (@retention=0), l'exécution de sp_mergecleanupmetadata ne permet pas de nettoyer les métadonnées de suivi de modification de la réplication de fusion pour la base de données. C'est pour cette raison qu'il faut utiliser la période de rétention infinie avec prudence.

Lorsque vous exécutez cette procédure stockée, vous pouvez réinitialiser, ou non, les abonnés en affectant les valeurs TRUE (valeur par défaut) ou FALSE au paramètre @reinitialize_subscriber. Si vous exécutez sp_mergecleanupmetadata et que le paramètre @reinitialize_subscriber correspond à TRUE, une capture est réappliquée à l'abonné même si l'abonnement a été créé sans aucune capture initiale (par exemple, si le schéma et les données de capture ont été appliqués manuellement ou s'ils existaient déjà au niveau de l'abonné). L'attribution de la valeur FALSE doit être réalisée avec précaution car si l'abonnement n'est pas réinitialisé, vous devez veiller à ce que les données du serveur de publication et de l'abonné soient synchronisées.

Quelle que soit la valeur de @reinitialize_subscriber, sp_mergecleanupmetadata échoue si des processus de fusion en cours tentent de télécharger des modifications apportées à un serveur de publication ou à un abonné rééditeur alors que la procédure stockée est appelée.

Exécution de sp_mergecleanupmetadata avec @reinitialize\_subscriber = TRUE :

  1. Bien qu'il ne soit pas nécessaire d'arrêter toutes les mises à jour des bases de données d'abonnement et de publication, cette opération est recommandée. Si les mises à jour se poursuivent, toute mise à jour réalisée sur un abonné depuis la dernière fusion est perdue lorsque la publication est réinitialisée, mais les données de convergence sont conservées.
  2. Exécutez une fusion à l'aide de l'Agent de fusion. Il est recommandé d'utiliser l'option de ligne de commande –Validate d'Agent sur chaque abonné lors de l'exécution de l'Agent de fusion. Si vous exécutez des fusions en mode continu, consultez la partie Remarques importantes concernant les fusions en mode continu plus avant dans cette section.
  3. Une fois que toutes les fusions ont été opérées, exécutez sp_mergecleanupmetadata.
  4. Exécutez sp_reinitmergepullsubscription sur tous les abonnés utilisant un abonnement par extraction de données (pull) nommé ou anonyme pour garantir la convergence des données.
  5. Si vous exécutez des fusions en mode continu, consultez la partie Remarques importantes concernant les fusions en mode continu plus avant dans cette section.
  6. Régénérez les fichiers de capture instantanée de toutes les publications de fusion impliquées à tous les niveaux. Si vous tentez d'effectuer la fusion sans régénérer la capture instantanée au préalable, vous recevez un message vous invitant à la régénérer.
  7. Sauvegardez la base de données de publication. À défaut, une opération de fusion peut échouer après une restauration de la base de données de publication.

Exécution de sp_mergecleanupmetadata avec @reinitialize\_subscriber = FALSE :

  1. Arrêtez toutes les mises à jour des bases de données de publication et d'abonnement.
  2. Exécutez une fusion à l'aide de l'Agent de fusion. Il est recommandé d'utiliser l'option de ligne de commande –Validate d'Agent sur chaque abonné lors de l'exécution de l'Agent de fusion. Si vous exécutez des fusions en mode continu, consultez la partie Remarques importantes concernant les fusions en mode continu plus avant dans cette section.
  3. Une fois que toutes les fusions ont été opérées, exécutez sp_mergecleanupmetadata.
  4. Si vous exécutez des fusions en mode continu, consultez la partie Remarques importantes concernant les fusions en mode continu plus avant dans cette section.
  5. Régénérez les fichiers de capture instantanée de toutes les publications de fusion impliquées à tous les niveaux. Si vous tentez d'effectuer la fusion sans régénérer la capture instantanée au préalable, vous recevez un message vous invitant à la régénérer.
  6. Sauvegardez la base de données de publication. À défaut, une opération de fusion peut échouer après une restauration de la base de données de publication.

Remarques importantes concernant les fusions en mode continu

Si vous exécutez des fusions en mode continu, vous devez :

  • soit arrêter l'Agent de fusion puis effectuer une autre fusion sans le paramètre-Continuous spécifié ;

  • soit désactiver la publication avec sp_changemergepublication pour entraîner l'échec de toute fusion en mode continu sollicitant l'état de publication.

    EXEC central..sp_changemergepublication @publication = 'dynpart_pubn', @property = 'status', @value = 'inactive'
    

Lorsque vous avez terminé l'étape 3 d'exécution de sp_mergecleanupmetadata, reprenez les fusions en mode continu en fonction de la méthode dont vous les avez arrêtées. Vous pouvez :

  • soit réintégrer le paramètre –Continuous de l'Agent de fusion ;

  • soit réactiver la publication avec sp_changemergepublication.

    EXEC central..sp_changemergepublication @publication = 'dynpart_pubn', @property = 'status', @value = 'active'
    

Autorisations

Seuls les membres du rôle de serveur fixe sysadmin ou du rôle de base de données fixe db_owner peuvent exécuter sp_mergecleanupmetadata.

Pour utiliser cette procédure stockée, le serveur de publication doit exécuter SQL Server 2000, et les abonnés, SQL Server 2000 ou Microsoft SQL Server 7.0, Service Pack 2.

Voir aussi

Référence

MSmerge_genhistory (Transact-SQL)
MSmerge_contents (Transact-SQL)
MSmerge_tombstone (Transact-SQL)

Autres ressources

Fonctionnement de la réplication de fusion

Aide et Informations

Assistance sur SQL Server 2005