sp_mergecleanupmetadata (Transact-SQL)
Sollte nur in Replikationstopologien mit Servern verwendet werden, auf denen frühere Versionen von Microsoft SQL Server als SQL Server 2000 Service Pack 1 ausgeführt werden. Mit sp_mergecleanupmetadata können Administratoren Metadaten in MSmerge_genhistory-, MSmerge_contents- und MSmerge_tombstone-Systemtabellen bereinigen. Diese gespeicherte Prozedur wird auf Verlegerebene für die Veröffentlichungsdatenbank ausgeführt.
Transact-SQL-Syntaxkonventionen
Syntax
sp_mergecleanupmetadata [ [ @publication = ] 'publication' ]
[ , [ @reinitialize_subscriber = ] 'reinitialize_subscriber' ]
Argumente
[ @publication = ] 'publication'
Entspricht dem Namen der Veröffentlichung. publication ist vom Datentyp sysname. Der Standardwert ist %, wobei die Metadaten für alle Veröffentlichungen bereinigt werden. Die Veröffentlichung muss bereits vorhanden sein, wenn sie explizit angegeben wird.[ @reinitialize_subscriber = ] 'subscriber'
Gibt an, ob der Abonnent erneut zu initialisieren ist. subscriber ist vom Datentyp nvarchar (5), kann den Wert TRUE oder FALSE aufweisen. Der Standardwert ist TRUE. Bei TRUE werden Abonnements für die erneute Initialisierung gekennzeichnet. Bei FALSE werden Abonnements nicht für die erneute Initialisierung gekennzeichnet.
Rückgabecodewerte
0 (Erfolg) oder 1 (Fehler)
Hinweise
sp_mergecleanupmetadata sollte nur in Replikationstopologien mit Servern verwendet werden, auf denen frühere Versionen von SQL Server ausgeführt werden als SQL Server 2000 Service Pack 1. Topologien mit ausschließlich SQL Server 2000 Service Pack 1 oder höher sollten eine auf Metadatencleanup basierende automatische Beibehaltung 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.
Vorsicht |
---|
Nach dem Ausführen von sp_mergecleanupmetadata werden standardmäßig alle Abonnements auf den Abonnenten, deren Metadaten in MSmerge_genhistory, MSmerge_contents und MSmerge_tombstone gespeichert sind, für die erneute Initialisierung gekennzeichnet, Änderungen auf dem Abonnenten gehen verloren, und die aktuelle Momentaufnahme wird als veraltet markiert. |
Hinweis |
---|
Falls mehrere Veröffentlichungen in einer Datenbank vorhanden sind und eine dieser Veröffentlichungen eine unbegrenzte Aufbewahrungsdauer für Veröffentlichungen verwendet (@retention=0), werden durch Ausführen von sp_mergecleanupmetadata die Metadaten der Änderungsprotokollierung der Mergereplikation für die Datenbank nicht geändert. Aus diesem Grund sollten Sie die unbegrenzte Aufbewahrungsdauer für Veröffentlichungen mit Vorsicht verwenden. |
Beim Ausführen dieser gespeicherten Prozedur können Sie wählen, ob Abonnenten durch Festlegen des Parameters @reinitialize_subscriber auf TRUE (Standard) oder FALSE erneut initialisiert werden sollen. Wenn sp_mergecleanupmetadata ausgeführt wird und der Parameter @reinitialize_subscriber dabei auf TRUE festgelegt ist, wird eine Momentaufnahme auf dem Abonnenten erneut angewendet, selbst wenn das Abonnement erstellt wurde, ohne dass eine Anfangsmomentaufnahme angewendet wurde (z. B. wenn die Momentaufnahmedaten und das Momentaufnahmeschema manuell angewendet wurden oder bereits auf dem Abonnenten vorhanden waren). Das Festlegen des Parameters auf FALSE sollte sorgfältig bedacht werden, denn wenn das Abonnement nicht erneut initialisiert wurde, müssen Sie sicherstellen, dass die Daten auf dem Verleger und Abonnenten synchronisiert werden.
Unabhängig vom Wert von @reinitialize_subscriber schlägt sp_mergecleanupmetadata fehl, wenn derzeit aktive Mergeprozesse vorhanden sind, die versuchen, Änderungen für einen Verleger zu dem Zeitpunkt mithilfe durch Hochladen zu übertragen, zu dem die gespeicherte Prozedur aufgerufen wird.
Ausführen von sp_mergecleanupmetadata mit @reinitialize\_subscriber = 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, dass Sie die Befehlszeile –Validate der Momentaufnahme auf jedem einzelnen Abonnenten verwenden, wenn Sie den Merge-Agent ausführen. Wenn Sie Mergeprozesse im fortlaufenden Modus ausführen, beachten Sie die Hinweise unter Besondere Überlegungen zu Mergeprozessen im fortlaufenden Modus weiter unten in diesem Abschnitt.
Nachdem alle Mergeprozesse abgeschlossen wurden, führen Sie sp_mergecleanupmetadata aus.
Führen Sie sp_reinitmergepullsubscription für alle Abonnenten aus, die benannte Abonnements oder anonyme Pullabonnements zum Sicherstellen der Datenkonvergenz verwenden.
Wenn Sie Mergeprozesse im fortlaufenden Modus ausführen, beachten Sie die Hinweise unter Besondere Überlegungen zu Mergeprozessen im fortlaufenden Modus weiter unten in diesem Abschnitt.
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 das zu einem Mergefehler führen, nachdem die Veröffentlichungsdatenbank wiederhergestellt wurde.
Ausführen von sp_mergecleanupmetadata mit @reinitialize\_subscriber = FALSE:
Beendet alle Updates der Veröffentlichungs- und Abonnementdatenbanken.
Ausführen eines Mergeprozesses durch Ausführen des Merge-Agents. Es wird empfohlen, dass Sie die Befehlszeile –Validate der Momentaufnahme auf jedem einzelnen Abonnenten verwenden, wenn Sie den Merge-Agent ausführen. Wenn Sie Mergeprozesse im fortlaufenden Modus ausführen, beachten Sie die Hinweise unter Besondere Überlegungen zu Mergeprozessen im fortlaufenden Modus weiter unten in diesem Abschnitt.
Nachdem alle Mergeprozesse abgeschlossen wurden, führen Sie sp_mergecleanupmetadata aus.
Wenn Sie Mergeprozesse im fortlaufenden Modus ausführen, beachten Sie die Hinweise unter Besondere Überlegungen zu Mergeprozessen im fortlaufenden Modus weiter unten in diesem Abschnitt.
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 das zu einem Mergefehler führen, nachdem die Veröffentlichungsdatenbank wiederhergestellt wurde.
Spezielle Überlegungen zu Mergeprozessen im fortlaufenden Modus
Wenn Sie Mergeprozesse im fortlaufenden Modus ausführen, müssen Sie einen der folgenden Schritte ausführen:
Den Merge-Agent beenden und dann einen weiteren Mergeprozess ausführen, ohne den Parameter -Continuous anzugeben.
Die Veröffentlichung mit sp_changemergepublication deaktivieren, um sicherzustellen, dass alle Mergeprozesse im fortlaufenden Modus, die den Veröffentlichungsstatus abrufen, fehlschlagen.
EXEC central..sp_changemergepublication @publication = 'dynpart_pubn', @property = 'status', @value = 'inactive'
Wenn Sie Schritt 3 der Ausführung von sp_mergecleanupmetadata abgeschlossen haben, nehmen Sie die Mergeprozesse im fortlaufenden Modus auf der Basis wieder auf, auf der Sie sie gestoppt haben. Führen Sie einen der folgenden Schritte aus:
Fügen Sie wieder den Parameter –Continuous für den Merge-Agent hinzu.
Reaktivieren Sie die Veröffentlichung mit sp_changemergepublication.
EXEC central..sp_changemergepublication @publication = 'dynpart_pubn', @property = 'status', @value = 'active'
Berechtigungen
Nur Mitglieder der festen Serverrolle sysadmin oder der festen Datenbankrolle db_owner können sp_mergecleanupmetadata ausführen.
Zum Verwenden dieser gespeicherten Prozedur muss der Verleger SQL Server 2000 ausführen. Die Abonnenten müssen entweder SQL Server 2000 oder Microsoft SQL Server 7.0, Service Pack 2, ausführen.
Siehe auch
Verweis
MSmerge_genhistory (Transact-SQL)