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 das Bereinigen von Metadaten in den Systemtabellen MSmerge_contents
und MSmerge_tombstone
in den MSmerge_genhistory
Systemtabellen. 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 dem Standardwert %
", der Metadaten für alle Publikationen bereinigt. 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
(erfolgreich) 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 die automatische aufbewahrungsbasierte Metadatenbereinigung 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 ist 0
), bereinigt die Ausführung sp_mergecleanupmetadata
der Zusammenführungsreplikationsänderungsnachverfolgungsmetadaten für die Datenbank nicht. 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
mit dem parameter "@reinitialize_subscriber " true
ausgeführt wird, wird eine Momentaufnahme beim Abonnenten erneut angewendet, auch wenn das Abonnement ohne eine anfängliche Momentaufnahme erstellt wurde (z. B. wenn die Momentaufnahmendaten 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_mergecleanupmetadata mit @reinitialize_subscriber = N'true'
Es wird empfohlen, aber nicht erforderlich, dass Sie alle Aktualisierungen der Publikations- und Abonnementdatenbanken 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_mergecleanupmetadata 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.