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 serveurs exécutant des versions de MicrosoftMicrosoft SQL ServerSQL Server antérieures à SQL Server 2000 (8.x)SQL Server 2000 (8.x) Service Pack 1. sp_mergecleanupmetadata permet aux administrateurs de nettoyer les métadonnées dans le MSmerge_genhistory, MSmerge_contents et MSmerge_tombstone tables système.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' Est le nom de la publication.[ @publication = ] 'publication' Is the name of the publication. publication est sysname, avec une valeur par défaut % , qui nettoie les métadonnées pour 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. abonné est nvarchar (5) , peut être TRUE ou FALSE, avec une valeur par défaut TRUE.subscriber is nvarchar(5), can be TRUE or FALSE, with a default of TRUE. Si TRUE, les abonnements sont marqués pour réinitialisation.If TRUE, subscriptions are marked for reinitialization. Si FALSE, les abonnements ne sont pas marqués pour réinitialisation.If FALSE, the subscriptions are not marked for reinitialization.

Valeurs des codes de retourReturn Code Values

0 (réussite) ou 1 (échec)0 (success) or 1 (failure)

NotesRemarks

sp_mergecleanupmetadata doit être utilisé uniquement dans les topologies de réplication qui incluent des serveurs exécutant des versions de SQL ServerSQL Server antérieures à SQL Server 2000 (8.x)SQL Server 2000 (8.x) 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 avoir sp_mergecleanupmetadata est exécutée, par défaut, tous les abonnements au niveau des abonnés de 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 sur une base de données, et l’une des publications utilise une période de rétention de publication infinie ( @retention** =0), il est en cours d’exécution sp_mergecleanupmetadata ne nettoie pas les métadonnées pour la base de données de suivi de modification de la réplication de fusion.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, vous pouvez choisir s’il faut réinitialiser les abonnés en définissant le **@reinitialize_subscriber** paramètre TRUE (la 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ée avec le **@reinitialize_subscriber** paramètre défini sur TRUE, un instantané est réappliqué sur l’abonné même si l’abonnement a été créé sans un instantané (par exemple, si les données d’instantané et le schéma ont été appliquées manuellement ou existe déjà sur l’abonné) initial.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). Définition du paramètre à FALSE doit être utilisée avec précaution, car 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 processus tentent de télécharger les modifications vers un serveur de publication ou à un abonné de republication de fusion échoue s’il existe en cours l’appel de la procédure stocké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 le -valider option de ligne de commande de l’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 Remarques importantes concernant 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 ont terminé, 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’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 Remarques importantes concernant 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êter tous les mises à jour pour les 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 le -valider option de ligne de commande de l’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 Remarques importantes concernant 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 ont terminé, exécutez sp_mergecleanupmetadata.After all merges have completed, execute sp_mergecleanupmetadata.

  4. Si vous exécutez des fusions en mode continu, consultez Remarques importantes concernant 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.

Remarques importantes concernant 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 l’Agent de fusion, puis effectuer une autre fusion sans le -continue paramètre spécifié.Stop the Merge Agent, and then perform another merge without the -Continuous parameter specified.

  • Désactiver la publication avec sp_changemergepublication pour vous assurer que les fusions en mode continu sollicitant l’état de publication.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 sp_mergecleanupmetadata, reprenez les fusions en mode continu selon 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:

  • Ajouter le -continue paramètre pour l’Agent de fusion.Add the -Continuous parameter back for the Merge Agent.

  • Réactiver 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 de la sysadmin rôle serveur fixe ou db_owner rôle de base de données fixe 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 être en cours d’exécution soit 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)