Überprüfen von replizierten Daten

Gilt für:SQL ServerAzure SQL-Datenbank

In diesem Thema wird beschrieben, wie Sie Daten am Abonnenten in SQL Server mithilfe von SQL Server Management Studio, Transact-SQL oder Replikationsverwaltungsobjekten (Replication Management Objects, RMO) überprüfen.

Bei der Transaktions- und der Mergereplikation können Sie überprüfen, ob die Daten auf dem Abonnenten mit denen auf dem Verleger übereinstimmen. Die Überprüfung kann für bestimmte Abonnements oder für alle Abonnements für eine Veröffentlichung ausgeführt werden. Geben Sie einen der folgenden Überprüfungstypen an. Bei der nächsten Ausführung des Verteilungs-Agents oder des Merge-Agents werden die Daten dann überprüft:

  • Nur Zeilenanzahl. Bei diesem Typ wird lediglich überprüft, ob die Tabelle auf dem Abonnenten dieselbe Zeilenanzahl besitzt wie die Tabelle auf dem Verleger. Der Inhalt der Zeilen wird nicht geprüft. Die Überprüfung der Zeilenanzahl bietet einen Überprüfungsansatz, der kaum Ressourcen beansprucht und Sie Probleme bei den Daten erkennen lässt.
  • Zeilenanzahl und binäre Prüfsumme. Bei dieser Form der Überprüfung wird zusätzlich zum Vergleich der Zeilenanzahl auf dem Verleger und dem Abonnenten mithilfe des Prüfsummenalgorithmus eine Prüfsumme aller Daten berechnet. Ist die Zeilenanzahl fehlerhaft, wird die Berechnung der Prüfsumme nicht ausgeführt.

Bei der Mergereplikation kann außer der Übereinstimmung der Daten auf dem Abonnenten und dem Verleger auch überprüft werden, ob die Daten auf den einzelnen Abonnenten richtig partitioniert sind. Weitere Informationen finden Sie unter Überprüfen von Partitionsinformationen für einen Mergeabonnenten.

Hinweis

Azure SQL Managed Instance kann als Herausgeber, Verleger und Abonnent der Momentaufnahmen- und Transaktionsreplikation fungieren. Datenbanken in Azure SQL-Datenbank können nun Pushabonnenten der Momentaufnahmen- und Transaktionsreplikation sein. Weitere Informationen finden Sie in den Abschnitten zur Transaktionsreplikation unter Replikation zu Azure SQL-Datenbank und Transaktionsreplikation mit Azure SQL Managed Instance (Vorschau).

Funktionsweise der Datenüberprüfung

SQL Server überprüft Daten, indem eine Zeilenanzahl oder eine Prüfsumme im Publisher berechnet wird, und dann diese Werte mit der Zeilenanzahl oder prüfsumme verglichen werden, die beim Abonnenten berechnet wird. Bei der Berechnung der Prüfsumme wird ein Wert für die gesamte Veröffentlichungstabelle und ein Wert für die gesamte Abonnementtabelle berechnet (die Daten in der text-, ntext- bzw. image -Spalte fließen nicht mit ein).

Während diese Berechnungen ausgeführt werden, werden die Tabellen, deren Zeilenanzahl bzw. Prüfsumme berechnet wird, vorübergehend für den gemeinsamen Zugriff gesperrt. Diese Berechnungen dauern aber nicht lange, sodass die Sperren meist schon innerhalb weniger Sekunden wieder aufgehoben werden.

Bei der Überprüfung anhand von binären Prüfsummen werden nicht die physischen Zeilen auf der Datenseite, sondern die einzelnen Spalten einer 32-Bit-Redundanzüberprüfung (Redundancy Check, CRC) unterzogen. Dadurch können die Spalten mit der Tabelle in einer beliebigen physischen Reihenfolge auf der Datenseite dargestellt werden, es wird aber trotzdem dieselbe CRC für die Zeile berechnet. Die Überprüfung anhand von binären Prüfsummen kann verwendet werden, wenn Zeilen- oder Spaltenfilter auf die Veröffentlichung angewendet wurden.

Der Prozess der Datenüberprüfung besteht aus drei Teilen:

  1. Zunächst müssen die Abonnements für eine Veröffentlichung, die überprüft werden sollen, gekennzeichnet werden. Markieren Sie Abonnements für die Überprüfung in den Dialogfeldern "Abonnement überprüfen", "Abonnements überprüfen" und "Alle Abonnements überprüfen", die im Ordner "Lokale Publikationen " und im Ordner "Lokale Abonnements " in Microsoft SQL Server Management Studio verfügbar sind. Abonnements können darüber hinaus auch auf der Registerkarte Alle Abonnements , auf der Registerkarte Überwachungsliste für Abonnements und über den Veröffentlichungsknoten im Replikationsmonitor gekennzeichnet werden. Informationen zum Starten des Replikationsmonitors finden Sie unter Starten des Replikationsmonitors.

  2. Ein Abonnement wird bei der nächsten Synchronisierung durch den Verteilungs-Agent (für Transaktionsreplikationen) oder durch den Merge-Agent (für Mergereplikationen) überprüft. Der Verteilungs-Agent wird in der Regel kontinuierlich ausgeführt. In diesem Fall erfolgt die Überprüfung sofort. Der Merge-Agent wird in der Regel bei Bedarf ausgeführt, und die Überprüfung erfolgt nach der Ausführung des Agents.

  3. Anzeigen der Überprüfungsergebnisse:

    • In den Detailfenstern im Replikationsmonitor auf der Registerkarte Verlauf Verteiler zu Abonnent für die Transaktionsreplikation und auf der Registerkarte Synchronisierungsverlauf für die Mergereplikation.
    • Im Dialogfeld "Synchronisierungsstatus anzeigen" in Management Studio.

Überlegungen und Einschränkungen

Bedenken Sie im Zusammenhang mit dem Überprüfen von Daten Folgendes:

  • Vor dem Überprüfen von Daten müssen Sie sämtliche Updateaktivitäten auf den Abonnenten beenden (die Aktivitäten auf dem Verleger müssen für die Überprüfung nicht beendet werden).
  • Weil Prüfsummen und binäre Prüfsummen beim Überprüfen eines großen Datensatzes große Mengen der Prozessorressourcen benötigen, sollten Sie die Überprüfung so planen, dass sie zum Zeitpunkt der niedrigsten Aktivität auf den Servern ausgeführt wird, die für die Replikation verwendet werden.
  • Die Replikation überprüft lediglich Tabellen. Ein Abgleich reiner Schemaartikel (wie z. B. gespeicherter Prozeduren) auf dem Verleger und dem Abonnenten erfolgt nicht.
  • Binäre Prüfsummen können für jede veröffentlichte Tabelle verwendet werden. Die Prüfsumme kann jedoch keine Tabellen mit Spaltenfiltern bzw. logische Tabellenstrukturen überprüfen, bei denen sich die Spaltenoffsets unterscheiden (Ursache dafür sind ALTER TABLE-Anweisungen, die Spalten löschen oder hinzufügen).
  • Die Überprüfung der Replikation verwendet die checksum -Funktion und die binary_checksum -Funktion. Informationen zu ihrem Verhalten finden Sie unter CHECKSUM (Transact-SQL) und BINARY_CHECKSUM (Transact-SQL).
  • Die Überprüfung durch binäre Prüfsummen oder Prüfsummen kann dann fälschlicherweise einen Fehler ausgeben, wenn auf dem Abonnenten andere Datentypen vorhanden sind als auf dem Verleger. Dies kann auftreten, wenn Sie eine der folgenden Aktionen ausführen:
    • Legen Sie explizit Schemaoptionen fest, um Datentypen für frühere Versionen von SQL Server zuzuordnen.
    • Legen Sie die Publikationskompatibilitätsebene für eine Zusammenführungsveröffentlichung auf eine frühere Version von SQL Server fest, und veröffentlichte Tabellen enthalten mindestens einen Datentyp, der für diese Version zugeordnet werden muss.
    • Sie initialisieren ein Abonnement manuell und verwenden auf dem Abonnenten andere Datentypen.
  • Bei der Transaktionsreplikation werden Überprüfungen mithilfe der binären Prüfsumme bzw. der Prüfsumme für transformierbare Abonnements nicht unterstützt.
  • Die Überprüfung wird für Daten, die in Nicht-SQL Server-Abonnenten repliziert wurden, nicht unterstützt.
  • Die Prozeduren für den Replikationsmonitor sind nur für Pushabonnements geeignet, da Pullabonnements im Replikationsmonitor nicht synchronisiert werden können. Sie können ein Abonnement jedoch für die Überprüfung markieren und die Überprüfungsergebnisse für Pullabonnements im Replikationsmonitor anzeigen.
  • In den Überprüfungsergebnissen wird angezeigt, ob die Überprüfung erfolgreich war oder fehlgeschlagen ist, es wird jedoch nicht angegeben, in welchen Zeilen die Überprüfung beim Auftreten eines Fehlers fehlgeschlagen ist. Verwenden Sie das Hilfsprogramm tablediff Utility, um die Daten auf dem Verleger und auf dem Abonnenten zu vergleichen. Weitere Informationen zur Verwendung dieses Hilfsprogramms mit replizierten Daten finden Sie unter Compare Replicated Tables for Differences (Replication Programming).

Ergebnisse der Datenüberprüfung

Nach abgeschlossener Überprüfung protokolliert der Verteilungs-Agent bzw. der Merge-Agent Meldungen zum Erfolg bzw. Misserfolg der Überprüfung (die Replikation vermerkt nicht, bei welchen Zeilen das Ergebnis negativ war). Diese Nachrichten können in SQL Server Management Studio, Replikationsmonitor und Replikationssystemtabellen angezeigt werden. Im oben aufgeführten Themen zur Vorgehensweise wird erläutert, wie Sie die Überprüfung ausführen und die Ergebnisse anzeigen können.

Bei negativem Überprüfungsergebnis sollten folgende Punkte bedacht werden:

Artikel in der Transaktionsreplikation

Verwendung von SQL Server Management Studio

  1. Verbinden zum Publisher in SQL Server Management Studio, und erweitern Sie dann den Serverknoten.
  2. Erweitern Sie den Ordner Replikation , und erweitern Sie dann den Ordner Lokale Veröffentlichungen .
  3. Klicken Sie mit der rechten Maustaste auf die Veröffentlichung, deren Abonnements Sie überprüfen möchten, und klicken Sie dann auf Abonnements überprüfen.
  4. Wählen Sie im Dialogfeld "Abonnements überprüfen" aus, welche Abonnements überprüft werden sollen:
    • Wählen Sie Alle SQL Server-Abonnements überprüfenaus.
    • Wählen Sie Folgende Abonnements überprüfenaus, und wählen Sie dann ein oder mehrere Abonnements aus.
  5. Um den Typ der durchzuführenden Überprüfung (Zeilenanzahl oder Zeilenanzahl und Prüfsumme) anzugeben, klicken Sie auf Überprüfungsoptionen, und geben Sie dann im Dialogfeld Optionen für die Abonnementüberprüfung die gewünschten Optionen an.
  6. Klickan Sie auf OK.
  7. Zeigen Sie die Überprüfungsergebnisse Im Replikationsmonitor oder im Dialogfeld Synchronisierungsstatus anzeigen an: Für jedes Abonnement:
    1. Erweitern Sie die Veröffentlichung, klicken Sie mit der rechten Maustaste auf das Abonnement, und klicken Sie dann auf Synchronisierungsstatus anzeigen.
    2. Wenn der Agent nicht ausgeführt wird, klicken Sie im Dialogfeld Synchronisierungsstatus anzeigen auf Start . Im Dialogfeld werden Meldungen mit Informationen zur Überprüfung angezeigt.
      Wenn keine Meldungen bezüglich der Überprüfung angezeigt werden, hat der Agent bereits eine nachfolgende Meldung protokolliert. Zeigen Sie die Überprüfungsergebnisse in diesem Fall im Replikationsmonitor an. Weitere Informationen finden Sie in den Prozeduren zu den Verfahrensweisen im Replikationsmonitor in diesem Thema.

Verwenden von Transact-SQL

Alle Artikel

  1. Führen Sie im Publisher in der Publikationsdatenbank sp_publication_validation (Transact-SQL) aus. Geben Sie @publication und einen der folgenden Werte für @rowcount_only an:

    • 1 - nur Überprüfung der Zeilenanzahl (Standardeinstellung)
    • 2 - Zeilenanzahl und binäre Prüfsumme

    Hinweis

    Wenn Sie sp_publication_validation (Transact-SQL) ausführen, wird sp_article_validation (Transact-SQL) für jeden Artikel in der Publikation ausgeführt. Um sp_publication_validation (Transact-SQL) erfolgreich auszuführen, müssen Sie über SELECT-Berechtigungen für alle Spalten in den veröffentlichten Basistabellen verfügen.

  2. (Optional) Starten Sie den Verteilungs-Agent für jedes Abonnement, wenn er nicht bereits ausgeführt wird. Weitere Informationen finden Sie unter Synchronize a Pull Subscription und Synchronize a Push Subscription.

  3. Überprüfen Sie die Agentausgabe für das Ergebnis der Überprüfung.

Einzelner Artikel

  1. Führen Sie im Publisher in der Publikationsdatenbank sp_article_validation (Transact-SQL) aus. Geben Sie @publication, den Namen des Artikels für @article und einen der folgenden Werte für @rowcount_only an:

    • 1 - nur Überprüfung der Zeilenanzahl (Standardeinstellung)
    • 2 - Zeilenanzahl und binäre Prüfsumme

    Hinweis

    Um sp_article_validation (Transact-SQL) erfolgreich auszuführen, müssen Sie über SELECT-Berechtigungen für alle Spalten in der veröffentlichten Basistabelle verfügen.

  2. (Optional) Starten Sie den Verteilungs-Agent für jedes Abonnement, wenn er nicht bereits ausgeführt wird. Weitere Informationen finden Sie unter Synchronize a Pull Subscription und Synchronize a Push Subscription.

  3. Überprüfen Sie die Agentausgabe für das Ergebnis der Überprüfung.

Einzelner Abonnent

  1. Öffnen Sie bei Publisher in der Publikationsdatenbank eine explizite Transaktion mit BEGIN TRANSACTION (Transact-SQL).

  2. Führen Sie im Publisher in der Publikationsdatenbank sp_marksubscriptionvalidation (Transact-SQL) aus. Geben Sie die Veröffentlichung für @publication, den Namen des Abonnenten für @subscriber und den Namen der Abonnementdatenbank für @destination_db an.

  3. (Optional) Wiederholen Sie Schritt 2 für jedes zu überprüfende Abonnement.

  4. Führen Sie im Publisher in der Publikationsdatenbank sp_article_validation (Transact-SQL) aus. Geben Sie @publication, den Namen des Artikels für @article und einen der folgenden Werte für @rowcount_only an:

    • 1 - nur Überprüfung der Zeilenanzahl (Standardeinstellung)
    • 2 - Zeilenanzahl und binäre Prüfsumme

    Hinweis

    Um sp_article_validation (Transact-SQL) erfolgreich auszuführen, müssen Sie über SELECT-Berechtigungen für alle Spalten in der veröffentlichten Basistabelle verfügen.

  5. Übernehmen Sie bei Publisher in der Publikationsdatenbank die Transaktion mit COMMIT TRANSACTION (Transact-SQL).

  6. (Optional) Wiederholen Sie die Schritte 1 bis 5 für jeden zu überprüfenden Artikel.

  7. (Optional) Starten Sie den Verteilungs-Agent, wenn er nicht bereits ausgeführt wird. Weitere Informationen finden Sie unter Synchronize a Pull Subscription und Synchronize a Push Subscription.

  8. Überprüfen Sie die Agentausgabe für das Ergebnis der Überprüfung. Weitere Informationen finden Sie unter Validate Data at the Subscriber.

Aller Pushabonnements an Transaktionsveröffentlichung

Verwenden des Replikationsmonitors

  1. Erweitern Sie im Replikationsmonitor im linken Bereich eine Verlegergruppe, und erweitern Sie dann einen Verleger.

  2. Klicken Sie mit der rechten Maustaste auf die Veröffentlichung, deren Abonnements Sie überprüfen möchten, und klicken Sie dann auf Abonnements überprüfen.

  3. Wählen Sie im Dialogfeld Abonnements überprüfen die zu überprüfenden Abonnements aus:

    • Wählen Sie Alle SQL Server-Abonnements überprüfenaus.
    • Wählen Sie Folgende Abonnements überprüfenaus, und wählen Sie dann ein oder mehrere Abonnements aus.
  4. Um den Typ der durchzuführenden Überprüfung (Zeilenanzahl oder Zeilenanzahl und Prüfsumme) anzugeben, klicken Sie auf Überprüfungsoptionen, und geben Sie dann im Dialogfeld Optionen für die Abonnementüberprüfung die gewünschten Optionen an.

  5. Klickan Sie auf OK.

  6. Klicken Sie auf die Registerkarte Alle Abonnements .

  7. Zeigen Sie die Überprüfungsergebnisse an. Führen Sie für jedes Pushabonnement folgende Vorgänge aus:

    1. Wenn der Agent nicht ausgeführt wird, klicken Sie mit der rechten Maustaste auf das Abonnement, und klicken Sie dann auf Synchronisierung starten.
    2. Klicken Sie mit der rechten Maustaste auf das Abonnement, und klicken Sie dann auf Details anzeigen.
    3. Zeigen Sie die Informationen auf der Registerkarte Verlauf Verteiler zu Abonnent im Textbereich Aktionen in der ausgewählten Sitzung an.

Einzelabonnement an Mergeveröffentlichung

Verwendung von SQL Server Management Studio

  1. Verbinden zum Publisher in SQL Server Management Studio, und erweitern Sie dann den Serverknoten.

  2. Erweitern Sie den Ordner Replikation , und erweitern Sie dann den Ordner Lokale Veröffentlichungen .

  3. Erweitern Sie die Veröffentlichung, für die Sie Abonnements überprüfen möchten, klicken Sie mit der rechten Maustaste auf das Abonnement, und klicken Sie dann auf Abonnement überprüfen.

  4. Wählen Sie im Dialogfeld Abonnement überprüfen die Option Dieses Abonnement überprüfenaus.

  5. Um den Typ der durchzuführenden Überprüfung (Zeilenanzahl oder Zeilenanzahl und Prüfsumme) anzugeben, klicken Sie auf Optionen, und geben Sie dann im Dialogfeld Optionen für die Abonnementüberprüfung die gewünschten Optionen an.

  6. Klickan Sie auf OK.

  7. Zeigen Sie die Überprüfungsergebnisse Im Replikationsmonitor oder im Dialogfeld Synchronisierungsstatus anzeigen an:

    1. Erweitern Sie die Veröffentlichung, klicken Sie mit der rechten Maustaste auf das Abonnement, und klicken Sie dann auf Synchronisierungsstatus anzeigen.
    2. Wenn der Agent nicht ausgeführt wird, klicken Sie im Dialogfeld Synchronisierungsstatus anzeigen auf Start . Im Dialogfeld werden Meldungen mit Informationen zur Überprüfung angezeigt.

    Wenn keine Meldungen bezüglich der Überprüfung angezeigt werden, hat der Agent bereits eine nachfolgende Meldung protokolliert. Zeigen Sie die Überprüfungsergebnisse in diesem Fall im Replikationsmonitor an. Weitere Informationen finden Sie in den Prozeduren zu den Verfahrensweisen im Replikationsmonitor in diesem Thema.

Alle Abonnements an Mergeveröffentlichung

Verwendung von SQL Server Management Studio

  1. Verbinden zum Publisher in SQL Server Management Studio, und erweitern Sie dann den Serverknoten.

  2. Erweitern Sie den Ordner Replikation , und erweitern Sie dann den Ordner Lokale Veröffentlichungen .

  3. Klicken Sie mit der rechten Maustaste auf die Veröffentlichung, deren Abonnements Sie überprüfen möchten, und klicken Sie dann auf Alle Abonnements überprüfen.

  4. Geben Sie im Dialogfeld Alle Abonnements überprüfen den Typ der durchzuführenden Überprüfung (Zeilenanzahl oder Zeilenanzahl und Prüfsumme) an.

  5. Klickan Sie auf OK.

  6. Zeigen Sie die Überprüfungsergebnisse Im Replikationsmonitor oder im Dialogfeld Synchronisierungsstatus anzeigen an: Führen Sie für jedes Abonnement folgende Vorgänge aus:

    1. Erweitern Sie die Veröffentlichung, klicken Sie mit der rechten Maustaste auf das Abonnement, und klicken Sie dann auf Synchronisierungsstatus anzeigen.
    2. Wenn der Agent nicht ausgeführt wird, klicken Sie im Dialogfeld Synchronisierungsstatus anzeigen auf Start . Im Dialogfeld werden Meldungen mit Informationen zur Überprüfung angezeigt.

    Wenn keine Meldungen bezüglich der Überprüfung angezeigt werden, hat der Agent bereits eine nachfolgende Meldung protokolliert. Zeigen Sie die Überprüfungsergebnisse in diesem Fall im Replikationsmonitor an. Weitere Informationen finden Sie in den Prozeduren zu den Verfahrensweisen im Replikationsmonitor in diesem Thema.

Einzelpushabonnement an Mergeveröffentlichung

Verwenden des Replikationsmonitors

  1. Erweitern Sie im Replikationsmonitor im linken Bereich eine Verlegergruppe, erweitern Sie einen Verleger, und klicken Sie dann auf eine Veröffentlichung.
  2. Klicken Sie auf die Registerkarte Alle Abonnements .
  3. Klicken Sie mit der rechten Maustaste auf das Abonnement, das Sie überprüfen möchten, und klicken Sie dann auf Abonnement überprüfen.
  4. Wählen Sie im Dialogfeld Abonnement überprüfen die Option Dieses Abonnement überprüfenaus.
  5. Um den Typ der durchzuführenden Überprüfung (Zeilenanzahl oder Zeilenanzahl und Prüfsumme) anzugeben, klicken Sie auf Optionen, und geben Sie dann im Dialogfeld Optionen für die Abonnementüberprüfung die gewünschten Optionen an.
  6. Klickan Sie auf OK.
  7. Klicken Sie auf die Registerkarte Alle Abonnements .
  8. Überprüfungsergebnisse anzeigen:
    1. Wenn der Agent nicht ausgeführt wird, klicken Sie mit der rechten Maustaste auf das Abonnement, und klicken Sie dann auf Synchronisierung starten.
    2. Klicken Sie mit der rechten Maustaste auf das Abonnement, und klicken Sie dann auf Details anzeigen.
    3. Zeigen Sie die Informationen auf der Registerkarte Synchronisierungsverlauf im Textbereich Letzte Meldung der ausgewählten Sitzung an.

Verwenden von Transact-SQL

  1. Führen Sie in publisher in der Publikationsdatenbank sp_validatemergesubscription (Transact-SQL) aus. Geben Sie @publication, den Namen des Abonnenten für @subscriber, den Namen der Abonnementdatenbank für @subscriber_db und einen der folgenden Werte für @level an:

    • 1 - Nur Überprüfung der Zeilenzählung
    • 3 - Überprüfung der Zeilenzählung und binären Prüfsumme

    Dadurch wird das ausgewählte Abonnement zur Überprüfung gekennzeichnet.

  2. Starten Sie den Merge-Agent für jedes Abonnement. Weitere Informationen finden Sie unter Synchronize a Pull Subscription und Synchronize a Push Subscription.

  3. Überprüfen Sie die Agentausgabe für das Ergebnis der Überprüfung.

  4. Wiederholen Sie die Schritte 1 bis 3 für jedes zu überprüfende Abonnement.

Hinweis

Ein Abonnement für eine Mergeveröffentlichung kann auch am Ende einer Synchronisierung überprüft werden. Dazu geben Sie den -Validate -Parameter an, wenn der Replication Merge Agentausgeführt wird.

Alle Pushabonnements an Mergeveröffentlichung

Verwenden des Replikationsmonitors

  1. Erweitern Sie im Replikationsmonitor im linken Bereich eine Verlegergruppe, und erweitern Sie dann einen Verleger.
  2. Klicken Sie mit der rechten Maustaste auf die Veröffentlichung, deren Abonnements Sie überprüfen möchten, und klicken Sie dann auf Alle Abonnements überprüfen.
  3. Geben Sie im Dialogfeld Alle Abonnements überprüfen den Typ der durchzuführenden Überprüfung (Zeilenanzahl oder Zeilenanzahl und Prüfsumme) an.
  4. Klickan Sie auf OK.
  5. Klicken Sie auf die Registerkarte Alle Abonnements .
  6. Zeigen Sie die Überprüfungsergebnisse an. Für jedes Pushabonnement:
    1. Wenn der Agent nicht ausgeführt wird, klicken Sie mit der rechten Maustaste auf das Abonnement, und klicken Sie dann auf Synchronisierung starten.
    2. Klicken Sie mit der rechten Maustaste auf das Abonnement, und klicken Sie dann auf Details anzeigen.
    3. Zeigen Sie die Informationen auf der Registerkarte Synchronisierungsverlauf im Textbereich Letzte Meldung der ausgewählten Sitzung an.

Verwenden von Transact-SQL

  1. Führen Sie im Publisher in der Publikationsdatenbank sp_validatemergepublication (Transact-SQL) aus. Geben Sie @publication und einen der folgenden Werte für @level an:

    • 1 - Nur Überprüfung der Zeilenzählung
    • 3 - Überprüfung der Zeilenzählung und binären Prüfsumme

    Dadurch werden alle Abonnements zur Überprüfung gekennzeichnet.

  2. Starten Sie den Merge-Agent für jedes Abonnement. Weitere Informationen finden Sie unter Synchronize a Pull Subscription und Synchronize a Push Subscription.

  3. Überprüfen Sie die Agentausgabe für das Ergebnis der Überprüfung. Weitere Informationen finden Sie unter Validate Data at the Subscriber.

Überprüfen von Daten mithilfe von Merge-Agent-Parametern

  1. Starten Sie auf eine der folgenden Arten den Merge-Agent auf dem Abonnenten (Pullabonnement) oder auf dem Verteiler (Pushabonnement) von der Befehlszeile.

    • Durch Angeben eines Werts von 1 (Zeilenanzahl) oder 3 (Zeilenanzahl und binäre Prüfsumme) für den -Validate -Parameter.
    • Durch Angeben von Zeilenanzahlüberprüfung oder Überprüfung der Zeilenanzahl und Prüfsumme für den -ProfileName -Parameter.

    Weitere Informationen finden Sie unter Synchronize a Pull Subscription oder Synchronize a Push Subscription.

Verwenden von Replikationsverwaltungsobjekten (RMO)

Die Replikation ermöglicht Ihnen mithilfe von Replikationsverwaltungsobjekten (RMO), programmgesteuert zu überprüfen, ob die Daten auf dem Abonnenten mit den Daten auf dem Verleger übereinstimmen. Welche Objekte Sie verwenden, hängt vom Typ der Replikationstopologie ab. Für die Transaktionsreplikation ist eine Überprüfung aller Abonnements für eine Veröffentlichung erforderlich.

Hinweis

Ein Beispiel hierzu finden Sie unter Beispiel (RMO)weiter unten in diesem Abschnitt.

So überprüfen Sie die Daten für alle Artikel in einer Transaktionsveröffentlichung

  1. Erstellen Sie eine Verbindung mit dem Verleger, indem Sie die ServerConnection -Klasse verwenden.

  2. Erstellen Sie eine Instanz der TransPublication-Klasse. Legen Sie die Name -Eigenschaft und die DatabaseName -Eigenschaft für die Veröffentlichung fest. Legen Sie die ConnectionContext -Eigenschaft auf die in Schritt 1 erstellte Verbindung fest.

  3. Rufen Sie die LoadProperties -Methode auf, um die restlichen Objekteigenschaften abzurufen. Wenn diese Methode falsezurückgibt, sind die Veröffentlichungseigenschaften in Schritt 2 falsch definiert, oder die Veröffentlichung ist nicht vorhanden.

  4. Rufen Sie die ValidatePublication-Methode auf. Übergeben Sie die folgenden Werte:

    Dadurch werden die Artikel zur Überprüfung gekennzeichnet.

  5. Starten Sie den Verteilungs-Agent, falls er noch nicht ausgeführt wird, um alle Abonnements zu synchronisieren. Weitere Informationen finden Sie unter Synchronize a Push Subscription oder Synchronize a Pull Subscription. Das Ergebnis der Überprüfung wird in den Agentverlauf geschrieben. Weitere Informationen finden Sie unter Monitoring Replication.

So überprüfen Sie die Daten in allen Abonnements für eine Mergeveröffentlichung

  1. Erstellen Sie eine Verbindung mit dem Verleger, indem Sie die ServerConnection -Klasse verwenden.

  2. Erstellen Sie eine Instanz der MergePublication-Klasse. Legen Sie die Name -Eigenschaft und die DatabaseName -Eigenschaft für die Veröffentlichung fest. Legen Sie die ConnectionContext -Eigenschaft auf die in Schritt 1 erstellte Verbindung fest.

  3. Rufen Sie die LoadProperties -Methode auf, um die restlichen Objekteigenschaften abzurufen. Wenn diese Methode falsezurückgibt, sind die Veröffentlichungseigenschaften in Schritt 2 falsch definiert, oder die Veröffentlichung ist nicht vorhanden.

  4. Rufen Sie die ValidatePublication-Methode auf. Übergeben Sie die gewünschte ValidationOption.

  5. Führen Sie für jedes Abonnement den Merge-Agent aus, um die Überprüfung zu starten, oder warten Sie die nächste geplante Ausführung des Agents ab. Weitere Informationen finden Sie unter Synchronize a Pull Subscription und Synchronize a Push Subscription. Das Ergebnis der Überprüfung wird in den Agentverlauf geschrieben. Diesen können Sie mithilfe des Replikationsmonitors anzeigen. Weitere Informationen finden Sie unter Monitoring Replication.

So überprüfen Sie die Daten in einem einzelnen Abonnement für eine Mergeveröffentlichung

  1. Erstellen Sie eine Verbindung mit dem Verleger, indem Sie die ServerConnection -Klasse verwenden.

  2. Erstellen Sie eine Instanz der MergePublication-Klasse. Legen Sie die Name -Eigenschaft und die DatabaseName -Eigenschaft für die Veröffentlichung fest. Legen Sie die ConnectionContext -Eigenschaft auf die in Schritt 1 erstellte Verbindung fest.

  3. Rufen Sie die LoadProperties -Methode auf, um die restlichen Objekteigenschaften abzurufen. Wenn diese Methode falsezurückgibt, sind die Veröffentlichungseigenschaften in Schritt 2 falsch definiert, oder die Veröffentlichung ist nicht vorhanden.

  4. Rufen Sie die ValidateSubscription-Methode auf. Übergeben Sie den Namen des Abonnenten und der Abonnementdatenbank, der bzw. die überprüft wird, und die gewünschte ValidationOption.

  5. Führen Sie für das Abonnement den Merge-Agent aus, um die Überprüfung zu starten, oder warten Sie die nächste geplante Ausführung des Agents ab. Weitere Informationen finden Sie unter Synchronize a Pull Subscription und Synchronize a Push Subscription. Das Ergebnis der Überprüfung wird in den Agentverlauf geschrieben. Diesen können Sie mithilfe des Replikationsmonitors anzeigen. Weitere Informationen finden Sie unter Monitoring Replication.

Beispiel (RMO)

In diesem Beispiel werden alle Abonnements für eine Transaktionsveröffentlichung für die Zeilenanzahlüberprüfung gekennzeichnet.

// Define the server, database, and publication names
string publisherName = publisherInstance;
string publicationName = "AdvWorksProductTran";
string publicationDbName = "AdventureWorks2022";

TransPublication publication;

// Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);

try
{
    // Connect to the Publisher.
    conn.Connect();

    // Set the required properties for the publication.
    publication = new TransPublication();
    publication.ConnectionContext = conn;
    publication.Name = publicationName;
    publication.DatabaseName = publicationDbName;

    // If we can't get the properties for this publication, 
    // throw an application exception.
    if (publication.LoadProperties())
    {
        // Initiate validataion for all subscriptions to this publication.
        publication.ValidatePublication(ValidationOption.RowCountOnly,
            ValidationMethod.ConditionalFast, false);

        // If not already running, start the Distribution Agent at each 
        // Subscriber to synchronize and validate the subscriptions.
    }
    else
    {
        throw new ApplicationException(String.Format(
            "Settings could not be retrieved for the publication. " +
            "Ensure that the publication {0} exists on {1}.",
            publicationName, publisherName));
    }
}
catch (Exception ex)
{
    // Do error handling here.
    throw new ApplicationException(
        "Subscription validation could not be initiated.", ex);
}
finally
{
    conn.Disconnect();
}
' Define the server, database, and publication names
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksProductTran"
Dim publicationDbName As String = "AdventureWorks2022"

Dim publication As TransPublication

' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)

Try
    ' Connect to the Publisher.
    conn.Connect()

    ' Set the required properties for the publication.
    publication = New TransPublication()
    publication.ConnectionContext = conn
    publication.Name = publicationName
    publication.DatabaseName = publicationDbName

    ' If we can't get the properties for this publication, 
    ' throw an application exception.
    If publication.LoadProperties() Then

        ' Initiate validataion for all subscriptions to this publication.
        publication.ValidatePublication(ValidationOption.RowCountOnly, _
         ValidationMethod.ConditionalFast, False)

        ' If not already running, start the Distribution Agent at each 
        ' Subscriber to synchronize and validate the subscriptions.
    Else
        Throw New ApplicationException(String.Format( _
         "Settings could not be retrieved for the publication. " + _
         "Ensure that the publication {0} exists on {1}.", _
         publicationName, publisherName))
    End If
Catch ex As Exception
    ' Do error handling here.
    Throw New ApplicationException( _
     "Subscription validation could not be initiated.", ex)
Finally
    conn.Disconnect()
End Try

In diesem Beispiel wird ein bestimmtes Abonnement für eine Mergeveröffentlichung für die Zeilenanzahlüberprüfung gekennzeichnet.

// Define the server, database, and publication names
string publisherName = publisherInstance;
string publicationName = "AdvWorksSalesOrdersMerge";
string publicationDbName = "AdventureWorks2022";
string subscriberName = subscriberInstance;
string subscriptionDbName = "AdventureWorks2022Replica";

MergePublication publication;

// Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);

try
{
    // Connect to the Publisher.
    conn.Connect();

    // Set the required properties for the publication.
    publication = new MergePublication();
    publication.ConnectionContext = conn;
    publication.Name = publicationName;
    publication.DatabaseName = publicationDbName;


    // If we can't get the properties for this merge publication, then throw an application exception.
    if (publication.LoadProperties())
    {
        // Initiate validation of the specified subscription.
        publication.ValidateSubscription(subscriberName,
            subscriptionDbName, ValidationOption.RowCountOnly);
        
        // Start the Merge Agent to synchronize and validate the subscription.
    }
    else
    {
        throw new ApplicationException(String.Format(
            "Settings could not be retrieved for the publication. " +
            "Ensure that the publication {0} exists on {1}.",
            publicationName, publisherName));
    }
}
catch (Exception ex)
{
    // Do error handling here.
    throw new ApplicationException(String.Format(
        "The subscription at {0} to the {1} publication could not " +
        "be validated.", subscriberName, publicationName), ex);
}
finally
{
    conn.Disconnect();
}
' Define the server, database, and publication names
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publicationDbName As String = "AdventureWorks2022"
Dim subscriberName As String = subscriberInstance
Dim subscriptionDbName As String = "AdventureWorks2022Replica"

Dim publication As MergePublication

' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)

Try
    ' Connect to the Publisher.
    conn.Connect()

    ' Set the required properties for the publication.
    publication = New MergePublication()
    publication.ConnectionContext = conn
    publication.Name = publicationName
    publication.DatabaseName = publicationDbName

    ' If we can't get the properties for this merge publication, then throw an application exception.
    If publication.LoadProperties() Then
        ' Initiate validation of the specified subscription.
        publication.ValidateSubscription(subscriberName, _
         subscriptionDbName, ValidationOption.RowCountOnly)

        ' Start the Merge Agent to synchronize and validate the subscription.
    Else
        Throw New ApplicationException(String.Format( _
         "Settings could not be retrieved for the publication. " + _
         "Ensure that the publication {0} exists on {1}.", _
         publicationName, publisherName))
    End If
Catch ex As Exception
    ' Do error handling here.
    Throw New ApplicationException(String.Format( _
     "The subscription at {0} to the {1} publication could not " + _
     "be validated.", subscriberName, publicationName), ex)
Finally
    conn.Disconnect()
End Try

Weitere Informationen

Best Practices for Replication Administration