Share via


Überprüfen von replizierten Daten

In diesem Thema wird beschrieben, wie Sie Daten beim Abonnenten in SQL Server 2014 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.

Funktionsweise der Datenüberprüfung

SQL Server überprüft Daten, indem es auf dem Verleger die Zeilenanzahl bzw. eine Prüfsumme berechnet und dann diese Werte mit der für den Abonnenten berechneten Zeilenanzahl bzw. Prüfsumme vergleicht. 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. Die Abonnements, die überprüft werden sollen, können Sie in den Dialogfeldern Abonnement überprüfen, Abonnements überprüfenund Alle Abonnements überprüfen , die über den Ordner Lokale Veröffentlichungen und Lokale Abonnements in MicrosoftSQL Server Management Studioverfü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

  • 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 Vergleichen replizierter Tabellen für Unterschiede (Replikationsprogrammierung).

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 Replikationsüberprüfung verwendet die checksum Funktionen und binary_checksum . 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. Dieser Fall kann eintreten, wenn Sie eine der folgenden Aufgaben ausführen:

    • Sie legen explizit Schemaoptionen zum Zuordnen von Datentypen für frühere Versionen von SQL Serverfest.
    • Sie legen den Veröffentlichungskompatibilitätsgrad für eine Mergeveröffentlichung auf eine frühere Version von SQL Serverfest, 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.

  • Bei Daten, die auf Nicht-SQL Server -Abonnenten repliziert wurden, kann keine solche Überprüfung stattfinden.

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 Meldungen können in SQL Server Management Studio, im Replikationsmonitor und in den 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:

  • Konfigurieren Sie die Replikationswarnung Replikation: Fehler bei der Datenüberprüfung auf dem Abonnenten , damit Sie bei einem negativen Überprüfungsergebnis benachrichtigt werden. Weitere Informationen finden Sie unter Konfigurieren vordefinierter Replikationswarnungen (SQL Server Management Studio)(administration/configure-predefined-replication-alerts-sql-server-management-studio.md).

  • Ist ein negatives Überprüfungsergebnis ein Problem für Ihre Anwendung? Falls ja, aktualisieren Sie die Daten manuell, damit sie synchronisiert sind, oder initialisieren Sie das Abonnement erneut:

Artikel in der Transaktionsreplikation

Verwendung von SQL Server Management Studio

  1. Stellen Sie in SQL Server Management Studioeine Verbindung mit dem Verleger her, 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 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.
  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. Klicken Sie auf OK.

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

Transact-SQL (T-SQL)

Alle Artikel

  1. Führen Sie auf dem Verleger in der Veröffentlichungsdatenbank sp_publication_validation (Transact-SQL) aus. Geben Sie @publication und einen der folgenden Werte für @rowcount_onlyan:

    • 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 Veröffentlichung ausgeführt. Um sp_publication_validation (Transact-SQL) erfolgreich auszuführen, benötigen Sie SELECT-Berechtigungen für alle Spalten in den veröffentlichten Basistabellen.

  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. Weitere Informationen finden Sie unter Überprüfen von replizierten Daten.

Einzelner Artikel

  1. Führen Sie auf dem Verleger in der Veröffentlichungsdatenbank sp_article_validation (Transact-SQL) aus. Geben Sie @publication, den Namen des Artikels für @articleund einen der folgenden Werte für @rowcount_onlyan:

    • 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. Weitere Informationen finden Sie unter Überprüfen von replizierten Daten.

Einzelner Abonnent

  1. Öffnen Sie auf dem Verleger in der Veröffentlichungsdatenbank eine explizite Transaktion mit BEGIN TRANSACTION (Transact-SQL).

  2. Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_marksubscriptionvalidation (Transact-SQL) aus. Geben Sie die Veröffentlichung für @publication, den Namen des Abonnenten für @subscriberund den Namen der Abonnementdatenbank für @destination_dban.

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

  4. Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_article_validation (Transact-SQL) aus. Geben Sie @publication, den Namen des Artikels für @articleund einen der folgenden Werte für @rowcount_onlyan:

    • 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. Committen Sie auf dem Verleger für die Veröffentlichungsdatenbank die Transaktion mithilfe von 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.

Alle Pushabonnements für eine 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. Klicken 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. Stellen Sie in SQL Server Management Studioeine Verbindung mit dem Verleger her, 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. Klicken 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.

Transact-SQL (T-SQL)

  1. Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_validatemergesubscription (Transact-SQL) aus. Geben Sie @publication, den Namen des Abonnenten für @subscriber, den Namen der Abonnementdatenbank für @subscriber_dbund einen der folgenden Werte für @levelan:

    • 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 Abonnements an Mergeveröffentlichung

Verwendung von SQL Server Management Studio

  1. Stellen Sie in SQL Server Management Studioeine Verbindung mit dem Verleger her, 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. Klicken 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.

Transact-SQL (T-SQL)

  1. Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_validatemergepublication (Transact-SQL) aus. Geben Sie @publication und einen der folgenden Werte für @levelan:

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

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. Klicken Sie auf OK.
  7. Klicken Sie auf die Registerkarte Alle Abonnements .
  8. Zeigen Sie die Überprüfungsergebnisse an:
    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.

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. Klicken Sie auf OK.
  5. Klicken Sie auf die Registerkarte Alle Abonnements .
  6. 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 Synchronisierungsverlauf im Textbereich Letzte Meldung der ausgewählten Sitzung an.

Überprüfen von Daten mit 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 false zurü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 false zurü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 false zurü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 = "AdventureWorks2012";

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 = "AdventureWorks2012"

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 = "AdventureWorks2012";
string subscriberName = subscriberInstance;
string subscriptionDbName = "AdventureWorks2012Replica";

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 = "AdventureWorks2012"
Dim subscriberName As String = subscriberInstance
Dim subscriptionDbName As String = "AdventureWorks2012Replica"

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