sp_mergecleanupmetadata (Transact-SQL)

Sollte nur in Replikationstopologien mit Servern verwendet werden, auf denen frühere Versionen von Microsoft SQL Server ausgeführt werden als SQL Server 2000 Service Pack 1. Mithilfe von sp_mergecleanupmetadata können Administratoren ein Cleanup der Metadaten in den Systemtabellen MSmerge_genhistory, MSmerge_contents und MSmerge_tombstone durchführen. Diese gespeicherte Prozedur wird beim Verleger mit der Veröffentlichungsdatenbank ausgeführt.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

sp_mergecleanupmetadata [ [ @publication = ] 'publication' ]
    [ , [ @reinitialize_subscriber = ] 'reinitialize_subscriber' ]

Argumente

  • [ @publication=] 'publication'
    Der Name der Veröffentlichung. publication ist vom Datentyp sysname und hat den Standardwert %. Damit wird ein Cleanup der Metadaten für alle Veröffentlichungen ausgeführt. Die Veröffentlichung muss bereits vorhanden sein, wenn sie explizit angegeben wird.

  • [ @reinitialize_subscriber = ] 'subscriber'
    Gibt an, ob der Abonnent erneut initialisiert werden soll. subscriber ist vom Datentyp nvarchar(5). Mögliche Werte sind TRUE oder FALSE. 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 auf Metadatencleanup basierende automatische Beibehaltung verwenden. Weitere Informationen zum Metadatencleanup finden Sie unter Funktionsweise der Mergereplikation. 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.

VorsichtshinweisVorsicht

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 der aktuelle Snapshot wird als veraltet markiert.

HinweisHinweis

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 ein Snapshot auf dem Abonnenten erneut angewendet, selbst wenn das Abonnement erstellt wurde, ohne dass ein Anfangssnapshot angewendet wurde (z. B. wenn die Snapshotdaten und das Snapshotschema 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:

  1. Es ist nicht vorgeschrieben, wird jedoch empfohlen, alle Updates der Veröffentlichungs- und Abonnementdatenbanken zu beenden. Falls Aktualisierungen fortgesetzt werden, gehen alle seit der letzten Zusammenführung beim Abonnenten vorgenommenen Aktualisierungen beim erneuten Initialisieren der Veröffentlichung verloren. Die Datenkonvergenz bleibt jedoch erhalten.

  2. Ausführen eines Mergeprozesses durch Ausführen des Merge-Agents. Es wird empfohlen, dass Sie die Befehlszeile –Validate des Agents 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.

  3. Nachdem alle Mergeprozesse abgeschlossen wurden, führen Sie sp_mergecleanupmetadata aus.

  4. Führen Sie sp_reinitmergepullsubscription für alle Abonnenten aus, die benannte Abonnements oder anonyme Pullabonnements zum Sicherstellen der Datenkonvergenz verwenden.

  5. 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.

  6. Generieren Sie Snaphotdateien für alle beteiligten Mergeveröffentlichungen auf allen Ebenen erneut. Wenn Sie das Zusammenführen versuchen, ohne den Snapshot zuvor erneut zu generieren, wird eine Eingabeaufforderung angezeigt, die Sie dazu auffordert, den Snapshot erneut zu generieren.

  7. 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:

  1. Beendet alle Aktualisierungen der Veröffentlichungs- und Abonnementdatenbanken.

  2. Ausführen eines Mergeprozesses durch Ausführen des Merge-Agents. Es wird empfohlen, dass Sie die Befehlszeile –Validate des Agents 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.

  3. Nachdem alle Mergeprozesse abgeschlossen wurden, führen Sie sp_mergecleanupmetadata aus.

  4. 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.

  5. Generieren Sie Snaphotdateien für alle beteiligten Mergeveröffentlichungen auf allen Ebenen erneut. Wenn Sie das Zusammenführen versuchen, ohne den Snapshot zuvor erneut zu generieren, wird eine Eingabeaufforderung angezeigt, die Sie dazu auffordert, den Snapshot erneut zu generieren.

  6. 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.