Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Moet alleen worden gebruikt in replicatietopologieën die servers bevatten die versies van SQL Server draaien vóór SQL Server 2000 (8.x) Service Pack 1.
sp_mergecleanupmetadata Maakt het mogelijk voor beheerders om metadata in de MSmerge_genhistory, MSmerge_contents, en MSmerge_tombstone systeemtabellen op te schonen. Deze opgeslagen procedure wordt uitgevoerd bij Publisher in de publicatiedatabase.
Transact-SQL syntaxis-conventies
Syntax
sys.sp_mergecleanupmetadata
[ [ @publication = ] N'publication' ]
[ , [ @reinitialize_subscriber = ] N'reinitialize_subscriber' ]
[ ; ]
Arguments
[ @publication = ] N'publicatie'
De naam van de publicatie.
@publication is sysname, met standaard , %wat metadata voor alle publicaties opruimt. De publicatie moet al bestaan als dit expliciet is gespecificeerd.
[ @reinitialize_subscriber = ] N'reinitialize_subscriber'
Geeft aan of de abonnee opnieuw geinitialiseerd moet worden.
@reinitialize_subscriber is nvarchar(5), met een standaard van true.
- Als
true, worden abonnementen gemarkeerd voor herinitialisatie. - Als
false, zijn de abonnementen niet gemarkeerd voor herinitialisatie.
Codewaarden retourneren
0 (geslaagd) of 1 (mislukt).
Remarks
sp_mergecleanupmetadatamoet alleen worden gebruikt in replicatietopologieën die servers omvatten die versies van SQL Server draaien vóór SQL Server 2000 (8.x) Service Pack 1. Topologieën die alleen SQL Server 2000 (8.x) Service Pack 1 of later bevatten, moeten automatische retentie-gebaseerde metadata-opschoning gebruiken. Wees bij het uitvoeren van deze opgeslagen procedure bewust van de noodzakelijke en mogelijk grote groei van het logbestand op de computer waarop de opgeslagen procedure draait.
Nadat sp_mergecleanupmetadata deze is uitgevoerd, worden standaard alle abonnementen bij de abonnees van publicaties die metadata in hebben opgeslagen en MSmerge_contentsMSmerge_genhistoryMSmerge_tombstone gemarkeerd zijn voor herinitialisatie, alle openstaande wijzigingen bij de abonnee verloren gegaan en wordt de huidige snapshot als verouderd gemarkeerd.
Als er meerdere publicaties op een database staan, en een van die publicaties gebruikt een oneindige publicatieretentieperiode (@retention is 0), ruimt het uitvoeren sp_mergecleanupmetadata niet de merge-replicatie wijzigingstracking metadata voor de database op. Gebruik daarom oneindige publicatieretentie met voorzichtigheid.
Bij het uitvoeren van deze opgeslagen procedure kun je kiezen of je Subscribers opnieuw initialiseert door de parameter @reinitialize_subscriber in te stellen op true (de standaard) of false. Als sp_mergecleanupmetadata wordt uitgevoerd met de @reinitialize_subscriber parameter ingesteld op true, wordt een snapshot opnieuw toegepast bij de abonnee, zelfs als het abonnement zonder een initiële snapshot is aangemaakt (bijvoorbeeld als de snapshotgegevens en het schema handmatig zijn toegepast of al bestaan bij de abonnee). Het instellen van de parameter op false moet met voorzichtigheid worden gebruikt, want als de publicatie niet opnieuw is geïntitimiliseerd, moet je ervoor zorgen dat de gegevens bij de Publisher en Subscriber gesynchroniseerd zijn.
Ongeacht de waarde van @reinitialize_subscriber, sp_mergecleanupmetadata faalt als er lopende mergeprocessen zijn die proberen wijzigingen te uploaden naar een Publisher of een herpublicerende abonnee op het moment dat de opgeslagen procedure wordt aangeroepen.
Voer sp_mergecleanupmetadata uit met @reinitialize_subscriber = N'waar'
Het wordt aanbevolen, maar niet verplicht, om alle updates van de publicatie- en abonnementsdatabases te stoppen. Als updates doorgaan, gaan alle updates die sinds de laatste samenvoeging bij een abonnee zijn gedaan verloren wanneer de publicatie opnieuw wordt geïntinitiseerd, maar de gegevensconvergentie blijft behouden.
Voer een merge uit door de Merge Agent te draaien. We raden aan om de -Validate agent commandoregeloptie te gebruiken bij elke abonnee wanneer je de Merge Agent uitvoert. Als je continue modus merges uitvoert, zie dan Speciale Overwegingen voor Continuous Mode Merges later in deze sectie.
Nadat alle samenvoegingen zijn voltooid, voer
sp_mergecleanupmetadataje . uitVoer
sp_reinitmergepullsubscriptionuit op alle abonnees met een benoemd of anoniem pull-abonnement om dataconvergentie te waarborgen.Als je continue modus merges uitvoert, zie dan Speciale Overwegingen voor Continuous Mode Merges later in deze sectie.
Regenereer snapshotbestanden voor alle samengevoegde publicaties op alle niveaus. Als je probeert te mergen zonder eerst de snapshot te regenereren, krijg je een prompt om de snapshot opnieuw te genereren.
Maak een back-up van de publicatiedatabase. Als dit niet gebeurt, kan het resulteren in een merge failure na het herstellen van de publicatiedatabase.
Voer sp_mergecleanupmetadata uit met @reinitialize_subscriber = N'false'
Stop alle updates van de publicatie- en abonnementsdatabases.
Voer een merge uit door de Merge Agent te draaien. We raden aan om de
-Validateopdrachtregeloptie van de agent bij elke abonnee te gebruiken wanneer je de Merge Agent uitvoert. Als je continue modus merges gebruikt, zie dan Speciale overwegingen voor continue mode merge later in dit artikel.Nadat alle samenvoegingen zijn voltooid, voer
sp_mergecleanupmetadataje . uitAls je continue modus merges uitvoert, zie dan Speciale Overwegingen voor Continuous Mode Merges later in deze sectie.
Regenereer snapshotbestanden voor alle samengevoegde publicaties op alle niveaus. Als je probeert te mergen zonder eerst de snapshot te regenereren, krijg je een prompt om de snapshot opnieuw te genereren.
Maak een back-up van de publicatiedatabase. Als dit niet gebeurt, kan het resulteren in een merge failure na het herstellen van de publicatiedatabase.
Speciale overwegingen voor continue mode-samenvoegingen
Als je continue modus samenvoegingen gebruikt, moet je ofwel:
Stop de Merge Agent en voer vervolgens een nieuwe merge uit zonder de
-Continuousopgegeven parameter.Deactiveer de publicatie met om
sp_changemergepublicationervoor te zorgen dat alle continue-mode merges die pollen voor de publicatiestatus zijn, falen.EXECUTE central..sp_changemergepublication @publication = 'dynpart_pubn', @property = 'status', @value = 'inactive';
Als je stap 3 van het hardlopen sp_mergecleanupmetadatahebt voltooid, hervat dan de samenvoegingen in continue modus op basis van hoe je ze hebt gestopt. Eén van de volgende opties:
Voeg de -Continu-parameter weer toe voor de Merge Agent.
Heractiveer de publicatie met
sp_changemergepublication.EXECUTE central..sp_changemergepublication @publication = 'dynpart_pubn', @property = 'status', @value = 'active';
Permissions
Alleen leden van de sysadmin-vaste serverrol of db_owner vaste databaserol kunnen uitvoeren sp_mergecleanupmetadata.
Om deze opgeslagen procedure te gebruiken, moet de Publisher SQL Server 2000 (8.x) draaien. De abonnees moeten ofwel SQL Server 2000 (8.x) of SQL Server 7.0, Service Pack 2, draaien.