Freigeben über


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_mergecleanupmetadataermöglicht Administratoren das Bereinigen von Metadaten in den Systemtabellen MSmerge_contentsund MSmerge_tombstone in den MSmerge_genhistorySystemtabellen. 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 falsedie 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_genhistorydenen 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 falsefestlegen. Wenn sp_mergecleanupmetadata mit dem parameter "@reinitialize_subscriber " trueausgefü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'

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

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

  3. Führen Sie nach Abschluss aller Zusammenführungen aus sp_mergecleanupmetadata.

  4. Führen Sie die Ausführung sp_reinitmergepullsubscription für alle Abonnenten mithilfe des benannten oder anonymen Pullabonnements aus, um die Datenkonvergenz sicherzustellen.

  5. Wenn Sie fortlaufende Modus zusammenführen, lesen Sie weiter unten in diesem Abschnitt besondere Überlegungen zu Seriendrucken .

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

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

  1. Beenden Sie alle Aktualisierungen der Publikations- und Abonnementdatenbanken.

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

  3. Führen Sie nach Abschluss aller Zusammenführungen aus sp_mergecleanupmetadata.

  4. Wenn Sie fortlaufende Modus zusammenführen, lesen Sie weiter unten in diesem Abschnitt besondere Überlegungen zu Seriendrucken .

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

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