Freigeben über


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 Publikationsdatenbank ausgeführt.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

  • [ @publication=] 'publication'
    Der Name der Publikation. publication ist vom Datentyp sysname und hat den Standardwert %. Damit wird ein Cleanup der Metadaten für alle Publikationen ausgeführt. Die Publikation 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.

ms186877.Caution(de-de,SQL.90).gifVorsicht:
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.
ms186877.note(de-de,SQL.90).gifHinweis:
Falls mehrere Publikationen in einer Datenbank vorhanden sind und eine dieser Publikationen eine unbegrenzte Aufbewahrungsdauer für Publikationen 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 Publikationen 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 von Upload 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 Publikations- und Abonnementdatenbanken zu beenden. Falls Aktualisierungen fortgesetzt werden, gehen alle seit der letzten Zusammenführung beim Abonnenten vorgenommenen Aktualisierungen beim erneuten Initialisieren der Publikation 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 Mergepublikationen 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 Publikationsdatenbank. Wenn dies versäumt wird, kann das zu einem Mergefehler führen, nachdem die Publikationsdatenbank wiederhergestellt wurde.

Ausführen von sp_mergecleanupmetadata mit @reinitialize\_subscriber = FALSE:

  1. Beendet alle Aktualisierungen der Publikations- 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 Mergepublikationen 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 Publikationsdatenbank. Wenn dies versäumt wird, kann das zu einem Mergefehler führen, nachdem die Publikationsdatenbank 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 Publikation mit sp_changemergepublication deaktivieren, um sicherzustellen, dass alle Mergeprozesse im fortlaufenden Modus, die den Publikationsstatus 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 Publikation 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)
MSmerge_contents (Transact-SQL)
MSmerge_tombstone (Transact-SQL)

Andere Ressourcen

Funktionsweise der Mergereplikation

Hilfe und Informationen

Informationsquellen für SQL Server 2005