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, Metadaten in den MSmerge_genhistoryTabellen und MSmerge_contentsMSmerge_tombstone Systemtabellen sauber zu sauber. 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 einer Standardeinstellung%, die Metadaten für alle Publikationen sauber. 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 (Erfolg) 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 automatische Aufbewahrungsbasierte Metadaten sauber up 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 ist0), sp_mergecleanupmetadata sauber die Zusammenführung der Replikationsänderungsnachverfolgungsmetadaten für die Datenbank nicht sauber. 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 der parameter @reinitialize_subscriber auf festgelegt trueist, wird eine Momentaufnahme beim Abonnenten erneut angewendet, auch wenn das Abonnement ohne anfängliche Momentaufnahme erstellt wurde (z. B. wenn die Momentaufnahme Daten 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_mergesauber upmetadata mit @reinitialize_subscriber = N'true'

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

  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_mergesauber upmetadata 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.