sp_mergecleanupmetadata (Transact-SQL)sp_mergecleanupmetadata (Transact-SQL)

S’APPLIQUE À : ouiSQL Server nonAzure SQL Database nonAzure SQL Data Warehouse nonParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Doit être utilisé uniquement dans les topologies de réplication qui incluent des MicrosoftMicrosoft serveurs exécutant SQL Server 2000 (8.x)SQL Server 2000 (8.x) des versions de SQL ServerSQL Server antérieures au Service Pack 1. sp_mergecleanupmetadata permet aux administrateurs de nettoyer les métadonnées dans les tables système MSmerge_genhistory, MSmerge_contents et MSmerge_tombstone .Should be used only in replication topologies that include servers running versions of MicrosoftMicrosoft SQL ServerSQL Server prior to SQL Server 2000 (8.x)SQL Server 2000 (8.x) Service Pack 1.sp_mergecleanupmetadata allows administrators to clean up metadata in the MSmerge_genhistory, MSmerge_contents and MSmerge_tombstone system tables. Cette procédure stockée est exécutée sur le serveur de publication dans la base de données de publication.This stored procedure is executed at the Publisher on the publication database.

Icône de lien de rubrique Conventions de la syntaxe Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SyntaxeSyntax

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

ArgumentsArguments

[ @publication = ] 'publication'Nom de la publication.[ @publication = ] 'publication' Is the name of the publication. publication est de % type sysname, avec la valeur par défaut, qui nettoie les métadonnées de toutes les publications.publication is sysname, with a default of %, which cleans up metadata for all publications. La publication doit déjà exister si elle est spécifiée de manière explicite.The publication must already exist if explicitly specified.

[ @reinitialize_subscriber = ] 'subscriber'Spécifie s’il faut réinitialiser l’abonné.[ @reinitialize_subscriber = ] 'subscriber' Specifies whether to reinitialize the Subscriber. Subscriber est de type nvarchar (5) , peut avoir la valeur true ou false, avec truecomme valeur par défaut.subscriber is nvarchar(5), can be TRUE or FALSE, with a default of TRUE. Si la valeur est true, les abonnements sont marqués pour la réinitialisation.If TRUE, subscriptions are marked for reinitialization. Si la valeurest false, les abonnements ne sont pas marqués pour la réinitialisation.If FALSE, the subscriptions are not marked for reinitialization.

Valeurs des codes de retourReturn Code Values

0 (succès) ou 1 (échec)0 (success) or 1 (failure)

NotesRemarks

sp_mergecleanupmetadata doit être utilisé uniquement dans les topologies de réplication qui incluent des SQL ServerSQL Server serveurs exécutant SQL Server 2000 (8.x)SQL Server 2000 (8.x) des versions de antérieures au Service Pack 1.sp_mergecleanupmetadata should be used only in replication topologies that include servers running versions of SQL ServerSQL Server prior to SQL Server 2000 (8.x)SQL Server 2000 (8.x) Service Pack 1. Les topologies qui incluent uniquement SQL Server 2000 (8.x)SQL Server 2000 (8.x) Service Pack 1 ou une version ultérieure doivent utiliser la rétention automatique basée sur le nettoyage des métadonnées.Topologies that include only SQL Server 2000 (8.x)SQL Server 2000 (8.x) Service Pack 1 or later should use automatic retention based metadata cleanup. 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.When running this stored procedure, be aware of the necessary and potentially large growth of the log file on the computer on which the stored procedure is running.

Attention

Après l’exécution de sp_mergecleanupmetadata , par défaut, tous les abonnements sur les abonnés des publications qui ont des métadonnées stockées dans MSmerge_genhistory, MSmerge_contents et MSmerge_tombstone sont marqués pour réinitialisation, les modifications en attente sur l’abonné sont perdues et l’instantané actuel est marqué comme obsolète.After sp_mergecleanupmetadata is executed, by default, all subscriptions at the Subscribers of publications that have metadata stored in MSmerge_genhistory, MSmerge_contents and MSmerge_tombstone are marked for reinitialization, any pending changes at the Subscriber are lost, and the current snapshot is marked obsolete.

Notes

S’il existe plusieurs publications dans une base de données et que l’une de ces publications utilise une période de rétention de=publication infinie ( @rétention 0), l’exécution de sp_mergecleanupmetadata ne nettoie pas le métadonnées de suivi des modifications de réplication de fusion pour la base de données.If there are multiple publications on a database, and any one of those publications uses an infinite publication retention period (@retention=0), running sp_mergecleanupmetadata does not clean up the merge replication change tracking metadata for the database. C'est pour cette raison qu'il faut utiliser la période de rétention infinie avec prudence.For this reason, use infinite publication retention with caution.

Lors de l’exécution de cette procédure stockée, vous pouvez choisir de réinitialiser les abonnés en définissant le @paramètre reinitialize_subscriber sur true (valeur par défaut) ou false.When executing this stored procedure, you can choose whether to reinitialize Subscribers by setting the @reinitialize_subscriber parameter to TRUE (the default) or FALSE. Si sp_mergecleanupmetadata est exécuté avec le @paramètre reinitialize_subscriber défini sur true, un instantané est réappliqué sur l’abonné même si l’abonnement a été créé sans instantané initial (pour par exemple, si les données et le schéma de l’instantané ont été appliqués manuellement ou existent déjà sur l’abonné).If sp_mergecleanupmetadata is executed with the @reinitialize_subscriber parameter set to TRUE, a snapshot is reapplied at the Subscriber even if the subscription was created without an initial snapshot (for example, if the snapshot data and schema were manually applied or already existed at the Subscriber). L’affectation de la valeur false au paramètre doit être utilisée avec précaution, car si la publication n’est pas réinitialisée, vous devez vous assurer que les données sur le serveur de publication et l’abonné sont synchronisées.Setting the parameter to FALSE should be used with caution, because if the publication is not reinitialized, you must ensure that data at the Publisher and Subscriber is synchronized.

Quelle que soit la valeur de @reinitialize_subscriber, sp_mergecleanupmetadata échoue si des processus de fusion en cours tentent de charger des modifications sur un serveur de publication ou sur un abonné de republication au moment de l’enregistrement la procédure est appelée.Regardless of the value of @reinitialize_subscriber, sp_mergecleanupmetadata fails if there are ongoing merge processes that are attempting to upload changes to a Publisher or a republishing Subscriber at the time the stored procedure is invoked.

Exécution de sp_mergecleanupmetadata avec @reinitialize_subscriber = true:Executing sp_mergecleanupmetadata with @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.It is recommended, but not required, that you stop all updates to the publication and subscription databases. 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.If updates continue, any updates made at a Subscriber since the last merge are lost when the publication is reinitialized, but data convergence is maintained.

  2. Exécutez une fusion à l'aide de l'Agent de fusion.Execute a merge by running the Merge Agent. Nous vous recommandons d’utiliser l’option de ligne de commande-Validate agent sur chaque abonné lorsque vous exécutez l’agent de fusion.We recommend that you use the -Validate agent command line option at each Subscriber when you run the Merge Agent. Si vous exécutez des fusions en mode continu, consultez considérations particulières sur les fusions en mode continu plus loin dans cette section.If you are running continuous mode merges, see Special Considerations for Continuous Mode Merges later in this section.

  3. Une fois toutes les fusions terminées, exécutez sp_mergecleanupmetadata.After all merges have completed, execute sp_mergecleanupmetadata.

  4. Exécutez sp_reinitmergepullsubscription sur tous les abonnés à l’aide d’un abonnement par extraction nommé ou anonyme pour garantir la convergence des données.Execute sp_reinitmergepullsubscription on all subscribers using named or anonymous pull subscription to ensure data convergence.

  5. Si vous exécutez des fusions en mode continu, consultez considérations particulières sur les fusions en mode continu plus loin dans cette section.If you are running continuous mode merges, see Special Considerations for Continuous Mode Merges later in this section.

  6. Régénérez les fichiers d'instantané de toutes les publications de fusion impliquées à tous les niveaux.Regenerate snapshot files for all merge publications involved at all levels. Si vous tentez d'effectuer la fusion sans régénérer l'instantané au préalable, vous recevez un message vous invitant à la régénérer.If you try to merge without regenerating the snapshot first, you receive a prompt to regenerate the snapshot.

  7. Sauvegardez la base de données de publication.Back up the publication database. car sans cela, une opération de fusion peut échouer après la restauration de la base de données de publication.Failure to do so can cause a merge failure after a restore of the publication database.

Exécution de sp_mergecleanupmetadata avec @reinitialize_subscriber = false:Executing sp_mergecleanupmetadata with @reinitialize_subscriber = FALSE:

  1. Arrêtez toutes les mises à jour des bases de données de publication et d’abonnement.Stop all updates to the publication and subscription databases.

  2. Exécutez une fusion à l'aide de l'Agent de fusion.Execute a merge by running the Merge Agent. Nous vous recommandons d’utiliser l’option de ligne de commande-Validate agent sur chaque abonné lorsque vous exécutez l’agent de fusion.We recommend that you use the -Validate agent command line option at each Subscriber when you run the Merge Agent. Si vous exécutez des fusions en mode continu, consultez considérations particulières sur les fusions en mode continu plus loin dans cette section.If you are running continuous mode merges, see Special Considerations for Continuous Mode Merges later in this section.

  3. Une fois toutes les fusions terminées, exécutez sp_mergecleanupmetadata.After all merges have completed, execute sp_mergecleanupmetadata.

  4. Si vous exécutez des fusions en mode continu, consultez considérations particulières sur les fusions en mode continu plus loin dans cette section.If you are running continuous mode merges, see Special Considerations for Continuous Mode Merges later in this section.

  5. Régénérez les fichiers d'instantané de toutes les publications de fusion impliquées à tous les niveaux.Regenerate snapshot files for all merge publications involved at all levels. Si vous tentez d'effectuer la fusion sans régénérer l'instantané au préalable, vous recevez un message vous invitant à la régénérer.If you try to merge without regenerating the snapshot first, you receive a prompt to regenerate the snapshot.

  6. Sauvegardez la base de données de publication.Back up the publication database. car sans cela, une opération de fusion peut échouer après la restauration de la base de données de publication.Failure to do so can cause a merge failure after a restore of the publication database.

Nous sommes à votre écoute : Si vous trouvez des informations obsolètes ou incorrectes dans cet article, par exemple une étape ou une erreur dans un code, n’hésitez pas à nous en faire part.We are listening: If you find something outdated or incorrect in this article, such as a step or a code example, please tell us. Vous pouvez cliquer sur le bouton Cette page dans la section Commentaires au bas de cette page.You can click the This page button in the Feedback section at the bottom of this page. Nous lisons chaque commentaire concernant SQL, généralement le jour suivant.We read every item of feedback about SQL, typically the next day. Nous vous remercions.Thanks.

Considérations spéciales pour les fusions en mode continuSpecial Considerations for Continuous Mode Merges

Si vous exécutez des fusions en mode continu, vous devez :If you are running continuous-mode merges, you must either:

  • Arrêtez le Agent de fusion, puis effectuez une autre fusion sans le paramètre -Continuous spécifié.Stop the Merge Agent, and then perform another merge without the -Continuous parameter specified.

  • Désactivez la publication avec sp_changemergepublication pour vous assurer que les fusions en mode continu qui interrogent l’état de la publication échouent.Deactivate the publication with sp_changemergepublication to ensure that any continuous-mode merges that are polling for the publication status fail.

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

Lorsque vous avez terminé l’étape 3 de l’exécution de sp_mergecleanupmetadata, reprenez les fusions en mode continu en fonction de la façon dont vous les avez arrêtées.When you have completed step 3 of running sp_mergecleanupmetadata, resume continuous mode merges based on how you stopped them. Vous pouvez :Either:

  • Rajoutez le paramètre -Continuous pour le agent de fusion.Add the -Continuous parameter back for the Merge Agent.

  • Réactivez la publication avec sp_changemergepublication.Reactivate the publication with sp_changemergepublication.

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

AutorisationsPermissions

Seuls les membres du rôle serveur fixe sysadmin ou du rôle de base de données fixe db_owner peuvent exécuter sp_mergecleanupmetadata.Only members of the sysadmin fixed server role or db_owner fixed database role can execute sp_mergecleanupmetadata.

Pour utiliser cette procédure stockée, le serveur de publication doit exécuter SQL Server 2000 (8.x)SQL Server 2000 (8.x),To use this stored procedure, the Publisher must be running SQL Server 2000 (8.x)SQL Server 2000 (8.x). Les abonnés doivent exécuter SQL Server 2000 (8.x)SQL Server 2000 (8.x) ou MicrosoftMicrosoft SQL ServerSQL Server 7,0, Service Pack 2.The Subscribers must be running either SQL Server 2000 (8.x)SQL Server 2000 (8.x) or MicrosoftMicrosoft SQL ServerSQL Server 7.0, Service Pack 2.

Voir aussiSee Also

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