sp_mergecleanupmetadata (Transact-SQL)
Gilt für:SQL Server
Sollte nur in Replikationstopologien verwendet werden, die Server mit Sql Server-Versionen vor SQL Server 2000 (8.x) Service Pack 1 enthalten. sp_mergecleanupmetadata
ermöglicht Administratoren, Metadaten in den MSmerge_genhistory
Tabellen und MSmerge_contents
MSmerge_tombstone
Systemtabellen sauber zu sauber. Diese gespeicherte Prozedur wird im Publisher in der Publikationsdatenbank ausgeführt.
Transact-SQL-Syntaxkonventionen
Syntax
sp_mergecleanupmetadata
[ [ @publication = ] N'publication' ]
[ , [ @reinitialize_subscriber = ] N'reinitialize_subscriber' ]
[ ; ]
Argumente
[ @publication = ] N'Publikation'
Der Name der Veröffentlichung. @publication ist "sysname" mit einer Standardeinstellung%
, die Metadaten für alle Publikationen sauber. Die Veröffentlichung muss bereits vorhanden sein, wenn sie explizit angegeben wird.
[ @reinitialize_subscriber = ] N'reinitialize_subscriber'
Gibt an, ob der Abonnent erneut zu initialisieren ist. @reinitialize_subscriber ist nvarchar(5), mit einem Standardwert von true
.
- Wenn
true
, Abonnements für die Erneute Initialisierung gekennzeichnet sind. - Wenn
false
die Abonnements nicht für die Erneute Initialisierung gekennzeichnet sind.
Rückgabecodewerte
0
(Erfolg) oder 1
(Fehler).
Hinweise
sp_mergecleanupmetadata
sollte nur in Replikationstopologien verwendet werden, die Server mit Sql Server-Versionen vor SQL Server 2000 (8.x) Service Pack 1 enthalten. Topologien, die nur SQL Server 2000 (8.x) Service Pack 1 oder höher enthalten, sollten automatische Aufbewahrungsbasierte Metadaten sauber up verwenden. Beim Ausführen dieser gespeicherten Prozedur müssen Sie beachten, dass die Protokolldatei auf dem Computer, auf dem die gespeicherte Prozedur ausgeführt wird, stark anwachsen kann.
Nach sp_mergecleanupmetadata
der Ausführung gehen standardmäßig alle Abonnements an den Abonnenten von Publikationen, in MSmerge_genhistory
denen Metadaten gespeichert sind, MSmerge_contents
und MSmerge_tombstone
zur Erneutitialisierung markiert sind, alle ausstehenden Änderungen am Abonnenten gehen verloren, und die aktuelle Momentaufnahme ist als veraltet gekennzeichnet.
Wenn mehrere Publikationen in einer Datenbank vorhanden sind und eine dieser Publikationen einen unbegrenzten Aufbewahrungszeitraum für Publikationen verwendet (@retention ist0
), sp_mergecleanupmetadata
sauber die Zusammenführung der Replikationsänderungsnachverfolgungsmetadaten für die Datenbank nicht sauber. Aus diesem Grund sollten Sie die unbegrenzte Aufbewahrungsdauer für Veröffentlichungen mit Vorsicht verwenden.
Wenn Sie diese gespeicherte Prozedur ausführen, können Sie auswählen, ob Abonnenten neu initialisiert werden sollen, indem Sie den parameter @reinitialize_subscriber auf true
(Standard) oder false
festlegen. Wenn sp_mergecleanupmetadata
der parameter @reinitialize_subscriber auf festgelegt true
ist, wird eine Momentaufnahme beim Abonnenten erneut angewendet, auch wenn das Abonnement ohne anfängliche Momentaufnahme erstellt wurde (z. B. wenn die Momentaufnahme Daten und das Schema manuell angewendet oder bereits beim Abonnenten vorhanden waren). Das Festlegen des Parameters sollte false
mit Vorsicht verwendet werden, denn wenn die Publikation nicht erneut initialisiert wird, müssen Sie sicherstellen, dass Die Daten im Publisher und Abonnenten synchronisiert werden.
Unabhängig vom Wert von @reinitialize_subscriber schlägt ein Fehler fehl, wenn es laufende Zusammenführungsprozesse gibt, die versuchen, sp_mergecleanupmetadata
Änderungen an einen Publisher hochzuladen, oder ein erneut veröffentlichender Abonnent zum Zeitpunkt des Aufrufs der gespeicherten Prozedur.
Ausführen sp_mergesauber upmetadata mit @reinitialize_subscriber = N'true'
Es ist nicht vorgeschrieben, wird jedoch empfohlen, alle Updates der Veröffentlichungs- und Abonnementdatenbanken zu beenden. Falls Updates fortgesetzt werden, gehen alle seit der letzten Zusammenführung beim Abonnenten vorgenommenen Updates beim erneuten Initialisieren der Veröffentlichung verloren. Die Datenkonvergenz bleibt jedoch erhalten.
Ausführen eines Mergeprozesses durch Ausführen des Merge-Agents. Es wird empfohlen, bei jedem Abonnenten die Befehlszeilenoption -Validate-Agent zu verwenden, wenn Sie die Merge-Agent ausführen. Wenn Sie fortlaufende Modus zusammenführen, lesen Sie weiter unten in diesem Abschnitt besondere Überlegungen zu Seriendrucken .
Führen Sie nach Abschluss aller Zusammenführungen aus
sp_mergecleanupmetadata
.Führen Sie die Ausführung
sp_reinitmergepullsubscription
für alle Abonnenten mithilfe des benannten oder anonymen Pullabonnements aus, um die Datenkonvergenz sicherzustellen.Wenn Sie fortlaufende Modus zusammenführen, lesen Sie weiter unten in diesem Abschnitt besondere Überlegungen zu Seriendrucken .
Generieren Sie Snaphotdateien für alle beteiligten Mergeveröffentlichungen auf allen Ebenen erneut. Wenn Sie das Zusammenführen versuchen, ohne die Momentaufnahme zuvor erneut zu generieren, wird eine Eingabeaufforderung angezeigt, die Sie dazu auffordert, die Momentaufnahme erneut zu generieren.
Sichern Sie die Veröffentlichungsdatenbank. Wenn dies versäumt wird, kann es zu einem Mergefehler führen, nachdem die Veröffentlichungsdatenbank wiederhergestellt wurde.
Ausführen sp_mergesauber upmetadata mit @reinitialize_subscriber = N'false'
Beenden Sie alle Aktualisierungen der Publikations- und Abonnementdatenbanken.
Ausführen eines Mergeprozesses durch Ausführen des Merge-Agents. Es wird empfohlen, die Befehlszeilenoption des
-Validate
Agents bei jedem Abonnenten zu verwenden, wenn Sie die Merge-Agent ausführen. Wenn Sie fortlaufende Modus zusammenführen, lesen Sie die besonderen Überlegungen für die Zusammenführung im fortlaufenden Modus weiter unten in diesem Artikel.Führen Sie nach Abschluss aller Zusammenführungen aus
sp_mergecleanupmetadata
.Wenn Sie fortlaufende Modus zusammenführen, lesen Sie weiter unten in diesem Abschnitt besondere Überlegungen zu Seriendrucken .
Generieren Sie Snaphotdateien für alle beteiligten Mergeveröffentlichungen auf allen Ebenen erneut. Wenn Sie das Zusammenführen versuchen, ohne die Momentaufnahme zuvor erneut zu generieren, wird eine Eingabeaufforderung angezeigt, die Sie dazu auffordert, die Momentaufnahme erneut zu generieren.
Sichern Sie die Veröffentlichungsdatenbank. Wenn dies versäumt wird, kann es zu einem Mergefehler führen, nachdem die Veröffentlichungsdatenbank wiederhergestellt wurde.
Besondere Überlegungen für fortlaufende Moduszusammenführungen
Wenn Sie den fortlaufenden Modus ausführen, müssen Sie eine der folgenden Aktionen ausführen:
Beenden Sie die Merge-Agent, und führen Sie dann eine weitere Zusammenführung ohne den
-Continuous
angegebenen Parameter aus.Deaktivieren Sie die Publikation,
sp_changemergepublication
um sicherzustellen, dass alle fortlaufenden Moduszusammenführungen, die den Publikationsstatus abfragen, fehlschlagen.EXEC central..sp_changemergepublication @publication = 'dynpart_pubn', @property = 'status', @value = 'inactive';
Wenn Sie Schritt 3 der Ausführung sp_mergecleanupmetadata
abgeschlossen haben, führen Sie den fortlaufenden Modus basierend auf ihrer Beendigung fort. Entweder:
Fügen Sie den Parameter "-Continuous" für den Merge-Agent wieder hinzu.
Reaktivieren Sie die Publikation mit
sp_changemergepublication
.EXEC central..sp_changemergepublication @publication = 'dynpart_pubn', @property = 'status', @value = 'active'
Berechtigungen
Nur Mitglieder der festen Serverrolle sysadmin oder db_owner feste Datenbankrolle können ausgeführt werden sp_mergecleanupmetadata
.
Um diese gespeicherte Prozedur zu verwenden, muss publisher SQL Server 2000 (8.x) ausführen. Die Abonnenten müssen entweder SQL Server 2000 (8.x) oder SQL Server 7.0, Service Pack 2 ausführen.
Zugehöriger Inhalt
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für