Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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.
Mit der Transaktions- und Zusammenführungsreplikation können Sie validieren, ob die Daten beim Abonnenten mit den Daten im Publisher übereinstimmen. Die Überprüfung kann für bestimmte Abonnements oder für alle Abonnements einer Publikation durchgeführt werden. Geben Sie einen der folgenden Validierungstypen an, und der Verteiler-Agent oder Merge-Agent validiert die Daten, wenn er das nächste Mal ausgeführt wird.
- Nur Zeilenanzahl. Dadurch wird überprüft, ob die Tabelle im Abonnent dieselbe Anzahl von Zeilen hat wie die Tabelle im Publisher, es wird jedoch nicht überprüft, ob der Inhalt der Zeilen übereinstimmt. Die Überprüfung der Zeilenanzahl bietet einen einfachen Ansatz zur Überprüfung, mit dem Sie Probleme mit Ihren Daten erkennen können.
- Zeilenanzahl und binäre Prüfsumme. Neben der Anzahl von Zeilen im Publisher und Subscriber wird eine Prüfsumme aller Daten mithilfe des Prüfsummenalgorithmus berechnet. Wenn die Zeilenanzahl fehlschlägt, wird die Prüfsumme nicht ausgeführt.
Zusätzlich zur Überprüfung, ob die Daten beim Abonnenten und Herausgeber übereinstimmen, bietet die Zusammenführungsreplikation die Möglichkeit, zu validieren, ob die Daten für jeden Abonnenten korrekt partitioniert sind. Weitere Informationen finden Sie unter Überprüfen von Partitionsinformationen für einen Zusammenführungs-Abonnenten.
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. Ein Wert wird für die gesamte Publikationstabelle berechnet, und ein Wert wird für die gesamte Abonnementtabelle berechnet, daten in text, ntextoder image Spalten werden jedoch nicht in die Berechnungen einbezogen.
Während die Berechnungen ausgeführt werden, werden temporär gemeinsame Sperren auf Tabellen gesetzt, für die die Zeilenanzählen oder Prüfsummen berechnet werden. Die Berechnungen werden jedoch schnell abgeschlossen, und die gemeinsamen Sperren werden normalerweise innerhalb von Sekunden entfernt.
Wenn binäre Prüfsummen verwendet werden, erfolgt die 32-Bit-Redundanzprüfung (CRC) auf Spaltenbasis anstelle eines CRC auf der physischen Zeile auf der Datenseite. Auf diese Weise können die Spalten einer Tabelle physisch auf der Datenseite in beliebiger Reihenfolge angeordnet werden, während für die Zeile dennoch dasselbe CRC berechnet wird. Die Überprüfung der binären Checksumme kann verwendet werden, wenn Zeilen- oder Spaltenfilter für die Veröffentlichung vorhanden sind.
Das Überprüfen von Daten ist ein dreiteiliger Prozess:
Ein einzelnes Abonnement oder alle Abonnements einer Publikation werden zur Überprüfung markiert . 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 MicrosoftSQL Server Management Studio verfügbar sind. Sie können Abonnements auch über die Registerkarte "Alle Abonnements ", die Registerkarte " Abonnementüberwachungsliste " und den Knoten "Publikationen" im Replikationsmonitor markieren. Informationen zum Starten des Replikationsmonitors finden Sie unter Starten des Replikationsmonitors.
Ein Abonnement wird überprüft, wenn es das nächste Mal vom Verteilungs-Agent (für die Transaktionsreplikation) oder dem Merge-Agent (für die Seriendruckreplikation) synchronisiert wird. Der Verteilungs-Agent wird in der Regel kontinuierlich ausgeführt, in diesem Fall erfolgt die Überprüfung sofort; Der Zusammenführungs-Agent wird in der Regel bei Bedarf ausgeführt. In diesem Fall tritt die Überprüfung auf, nachdem Sie den Agent ausgeführt haben.
Anzeigen der Validierungsergebnisse:
- In den Detailfenstern im Replikationsmonitor: Auf der Registerkarte Distributor to Subscriber History für die Transaktionsreplikation und auf der Registerkarte Synchronisierungsverlauf für die Zusammenführungsreplikation.
- Im Dialogfeld " Synchronisierungsstatus anzeigen " in Management Studio.
Überlegungen und Einschränkungen
- Die Verfahren für den Replikationsmonitor gelten nur für Pushabonnements, da Pullabonnements nicht im Replikationsmonitor synchronisiert werden können. Sie können jedoch ein Abonnement für die Überprüfung markieren und Validierungsergebnisse für Pullabonnements im Replikationsmonitor anzeigen.
- Die Überprüfungsergebnisse geben an, ob die Überprüfung erfolgreich war oder fehlgeschlagen ist. Geben Sie jedoch nicht an, welche Zeilen die Überprüfung fehlgeschlagen sind, wenn ein Fehler aufgetreten ist. Verwenden Sie das tablediff-Dienstprogramm, um Daten im Publisher und Subscriber zu vergleichen. Weitere Informationen zur Verwendung dieses Hilfsprogramms mit replizierten Daten finden Sie unter Compare Replicated Tables for Differences (Replication Programming).
Berücksichtigen Sie beim Überprüfen von Daten die folgenden Probleme:
Sie müssen alle Aktualisierungsaktivitäten bei Abonnenten beenden, bevor Sie Daten überprüfen (es ist nicht erforderlich, die Aktivität beim Publisher zu beenden, wenn die Überprüfung erfolgt).
Da Prüfsummen und binäre Prüfsummen bei der Überprüfung eines großen Datasets große Mengen von Prozessorressourcen erfordern können, sollten Sie die Überprüfung planen, wenn die geringste Aktivität auf den Servern vorhanden ist, die in der Replikation verwendet werden.
Die Replikation überprüft nur Tabellen; es wird nicht überprüft, ob Schema-Only-Artikel (z. B. gespeicherte Prozeduren) für Publisher und Abonnenten identisch sind.
Binäre Prüfsumme kann mit jeder veröffentlichten Tabelle verwendet werden. Die Prüfsumme kann Tabellen mit Spaltenfiltern oder logische Tabellenstrukturen nicht validieren, bei denen sich die Spaltenoffsets unterscheiden (aufgrund von ALTER TABLE-Anweisungen, bei denen Spalten gelöscht oder hinzugefügt werden).
Die Replikationsüberprüfung verwendet die
checksumFunktionen 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. 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.
- Initialisieren Sie ein Abonnement manuell und verwenden verschiedene Datentypen beim Abonnenten.
Binäre Prüfsummen und Prüfsummenvalidierungen werden für transformierbare Abonnements bei der transaktionalen Replikation nicht unterstützt.
Die Überprüfung wird für Daten, die in Nicht-SQL Server-Abonnenten repliziert wurden, nicht unterstützt.
Ergebnisse der Datenüberprüfung
Wenn die Überprüfung abgeschlossen ist, protokolliert der Verteiler-Agent oder der Seriendruck-Agent Nachrichten zu Erfolg oder Fehlschlagen (die Replikation meldet nicht, welche Zeilen fehlgeschlagen sind). Diese Nachrichten können in SQL Server Management Studio, Replikationsmonitor und Replikationssystemtabellen angezeigt werden. Im oben aufgeführten Thema wird veranschaulicht, wie Sie die Validierung ausführen und die Ergebnisse anzeigen.
Beachten Sie Folgendes, um Überprüfungsfehler zu behandeln:
Konfigurieren Sie die Replikationsbenachrichtigung mit dem Namen "Replikation:Abonnent" hat die Datenüberprüfung fehlgeschlagen , sodass Sie über den Fehler benachrichtigt werden. Weitere Informationen finden Sie unter [Konfigurieren vordefinierter Replikationsbenachrichtigungen (SQL Server Management Studio)(administration/configure-predefined-replication-alerts-sql-server-management-studio.md).
Ist die Tatsache, dass die Validierung fehlgeschlagen ist, ein Problem für Ihre Anwendung? Wenn es sich bei dem Überprüfungsfehler um ein Problem handelt, aktualisieren Sie die Daten manuell so, dass sie synchronisiert werden, oder initialisieren Sie das Abonnement erneut:
Daten können mithilfe des Hilfsprogramms "tablediff" aktualisiert werden. Weitere Informationen zur Verwendung dieses Dienstprogramms finden Sie unter Compare Replicated Tables for Differences (Replikationsprogrammierung).
Weitere Informationen zu reinitializaton finden Sie unter "Reinitialize Subscriptions".
Artikel in der Transaktionsreplikation
Verwendung von SQL Server Management Studio
Stellen Sie eine Verbindung mit dem Publisher in SQL Server Management Studio her, und erweitern Sie dann den Serverknoten.
Erweitern Sie den Replikationsordner , und erweitern Sie dann den Ordner " Lokale Publikationen ".
Klicken Sie mit der rechten Maustaste auf die Publikation, für die Sie Abonnements überprüfen möchten, und klicken Sie dann auf " Abonnements überprüfen".
Wählen Sie im Dialogfeld " Abonnements überprüfen" aus, welche Abonnements überprüft werden sollen:
- Wählen Sie "Alle SQL Server-Abonnements überprüfen" aus.
- Wählen Sie "Überprüfen der folgenden Abonnements" und dann ein oder mehrere Abonnements aus.
Wenn Sie den Typ der auszuführenden Überprüfung (Zeilenanzahl oder Zeilenanzahl und Prüfsumme) angeben möchten, klicken Sie auf "Gültigkeitsoptionen", und geben Sie dann optionen im Dialogfeld " Abonnementüberprüfungsoptionen " an.
Klicke auf OK.
Anzeigen der Überprüfungsergebnisse im Replikationsmonitor oder im Dialogfeld "Synchronisierungsstatus anzeigen ". Für jedes Abonnement:
- Erweitern Sie die Publikation, klicken Sie mit der rechten Maustaste auf das Abonnement, und klicken Sie dann auf "Synchronisierungsstatus anzeigen".
- Wenn der Agent nicht ausgeführt wird, klicken Sie im Dialogfeld "Synchronisierungsstatus anzeigen" auf "Start". Im Dialogfeld werden Informationsmeldungen zur Überprüfung angezeigt.
Wenn keine Meldungen zur Überprüfung angezeigt werden, hat der Agent bereits eine nachfolgende Nachricht protokolliert. Zeigen Sie in diesem Fall die Überprüfungsergebnisse im Replikationsmonitor an. Weitere Informationen finden Sie unter "Vorgehensweisen im Replikationsmonitor" in diesem Thema.
Verwenden von Transact-SQL (T-SQL)
Alle Artikel
Führen Sie beim 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 Zeilenanzahlüberprüfung (Standard)
- 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.
(Optional) Starten Sie den Verteilungsagenten für jedes Abonnement, wenn er noch nicht läuft. Weitere Informationen finden Sie unter Synchronisieren eines Pullabonnements und Synchronisieren eines Pushabonnements.
Überprüfen Sie die Ausgabe des Agenten auf das Ergebnis der Validierung. Weitere Informationen finden Sie unter Überprüfen replizierter Daten.
Einzelner Artikel
Führen Sie beim 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 Zeilenanzahlüberprüfung (Standard)
- 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.
Optional: Starten Sie den Verteilungs-Agenten für jedes Abonnement, wenn es nicht bereits ausgeführt wird. Weitere Informationen finden Sie unter Synchronisieren eines Pullabonnements und Synchronisieren eines Pushabonnements.
Überprüfen Sie die Ausgabe des Agenten auf das Ergebnis der Validierung. Weitere Informationen finden Sie unter Überprüfen replizierter Daten.
Einzelabonnent
Öffnen Sie bei Publisher in der Publikationsdatenbank eine explizite Transaktion mit BEGIN TRANSACTION (Transact-SQL).
Führen Sie beim Publisher in der Publikationsdatenbank sp_marksubscriptionvalidation (Transact-SQL) aus. Geben Sie die Publikation für @publication, den Namen des Abonnenten für @subscriber und den Namen der Abonnementdatenbank für @destination_db an.
(Optional) Wiederholen Sie Schritt 2 für jedes zu überprüfende Abonnement.
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 Zeilenanzahlüberprüfung (Standard)
- 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.
Führen Sie im Publisher auf der Publikationsdatenbank die Transaktion mit COMMIT TRANSACTION (Transact-SQL) aus.
(Optional) Wiederholen Sie die Schritte 1 bis 5 für jeden überprüften Artikel.
(Optional) Starten Sie den Verteilungs-Agent, wenn er noch nicht ausgeführt wird. Weitere Informationen finden Sie unter Synchronisieren eines Pullabonnements und Synchronisieren eines Pushabonnements.
Überprüfen Sie die Agentausgabe auf das Ergebnis der Überprüfung. Weitere Informationen finden Sie unter Daten beim Abonnenten validieren.
Alle Pushabonnements an eine Transaktionsveröffentlichung
Verwenden des Replikationsmonitors
- Erweitern Sie im Replikationsmonitor eine Publisher-Gruppe im linken Bereich, und erweitern Sie dann einen Publisher.
- Klicken Sie mit der rechten Maustaste auf die Publikation, für die Sie Abonnements überprüfen möchten, und klicken Sie dann auf " Abonnements überprüfen".
- Wählen Sie im Dialogfeld " Abonnements überprüfen" aus, welche Abonnements überprüft werden sollen:
- Wählen Sie "Alle SQL Server-Abonnements überprüfen" aus.
- Wählen Sie "Überprüfen der folgenden Abonnements" und dann ein oder mehrere Abonnements aus.
- Wenn Sie den Typ der auszuführenden Überprüfung (Zeilenanzahl oder Zeilenanzahl und Prüfsumme) angeben möchten, klicken Sie auf "Gültigkeitsoptionen", und geben Sie dann optionen im Dialogfeld " Abonnementüberprüfungsoptionen " an.
- Klicke auf OK.
- Klicken Sie auf die Registerkarte Alle Abonnements .
- Überprüfungsergebnisse anzeigen. Für jedes Pushabonnement:
- Wenn der Agent nicht ausgeführt wird, klicken Sie mit der rechten Maustaste auf das Abonnement, und klicken Sie dann auf " Synchronisieren starten".
- Klicken Sie mit der rechten Maustaste auf das Abonnement, und klicken Sie dann auf "Details anzeigen".
- Zeigen Sie Informationen auf der Registerkarte "Abonnentenverlauf " in den Aktionen im ausgewählten Sitzungstextbereich an.
Für ein einzelnes Abonnement für eine Zusammenführungsveröffentlichung
Verwendung von SQL Server Management Studio
Stellen Sie eine Verbindung mit dem Publisher in SQL Server Management Studio her, und erweitern Sie dann den Serverknoten.
Erweitern Sie den Replikationsordner , und erweitern Sie dann den Ordner " Lokale Publikationen ".
Erweitern Sie die Publikation, 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".
Wählen Sie im Dialogfeld " Abonnement überprüfen " die Option "Dieses Abonnement überprüfen" aus.
Klicken Sie zum Angeben des Auszuführenden Gültigkeitstyps (Zeilenanzahl oder Zeilenanzahl und Prüfsumme) auf "Optionen", und geben Sie dann optionen im Dialogfeld " Abonnementüberprüfungsoptionen " an.
Klicke auf OK.
Anzeigen der Überprüfungsergebnisse im Dialogfeld "Replikationsmonitor" oder im Dialogfeld " Status der Ansichtssynchronisierung ":
- Erweitern Sie die Publikation, klicken Sie mit der rechten Maustaste auf das Abonnement, und klicken Sie dann auf "Synchronisierungsstatus anzeigen".
- Wenn der Agent nicht ausgeführt wird, klicken Sie im Dialogfeld "Synchronisierungsstatus anzeigen" auf "Start". Im Dialogfeld werden Informationsmeldungen zur Überprüfung angezeigt.
Wenn keine Meldungen zur Überprüfung angezeigt werden, hat der Agent bereits eine nachfolgende Nachricht protokolliert. Zeigen Sie in diesem Fall die Überprüfungsergebnisse im Replikationsmonitor an. Weitere Informationen finden Sie im Abschnitt dieses Themas, der erläutert, wie die Verfahren im Replikationsmonitor durchgeführt werden.
Verwenden von Transact-SQL (T-SQL)
Führen Sie beim 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 Zeilenanzahl-Prüfung.
- 3 – Überprüfung der binären Prüfsumme der Zeilenanzahl.
Dadurch wird das ausgewählte Abonnement für die Überprüfung markiert.
Starten Sie den Zusammenführungs-Agenten für jedes Abonnement. Weitere Informationen finden Sie unter Synchronisieren eines Pullabonnements und Synchronisieren eines Pushabonnements.
Überprüfen Sie die Agentenausgabe auf das Ergebnis der Validierung.
Wiederholen Sie die Schritte 1 bis 3 für jedes Überprüfte Abonnement.
Hinweis
Ein Abonnement einer Zusammenführungsveröffentlichung kann auch am Ende einer Synchronisierung überprüft werden, indem der Parameter "-Validate" angegeben wird, wenn der Replikationszusammenführungs-Agent ausgeführt wird.
Für alle Abonnements einer Zusammenführungspublikation
Verwendung von SQL Server Management Studio
Stellen Sie eine Verbindung mit dem Publisher in SQL Server Management Studio her, und erweitern Sie dann den Serverknoten.
Erweitern Sie den Replikationsordner , und erweitern Sie dann den Ordner " Lokale Publikationen ".
Klicken Sie mit der rechten Maustaste auf die Publikation, für die Sie Abonnements überprüfen möchten, und klicken Sie dann auf " Alle Abonnements überprüfen".
Geben Sie im Dialogfeld "Alle Abonnements überprüfen" den Typ der auszuführenden Überprüfung an (Zeilenanzahl oder Zeilenanzahl und Prüfsumme).
Klicke auf OK.
Anzeigen der Überprüfungsergebnisse im Replikationsmonitor oder im Dialogfeld "Synchronisierungsstatus anzeigen ". Für jedes Abonnement:
- Erweitern Sie die Publikation, klicken Sie mit der rechten Maustaste auf das Abonnement, und klicken Sie dann auf "Synchronisierungsstatus anzeigen".
- Wenn der Agent nicht ausgeführt wird, klicken Sie im Dialogfeld "Synchronisierungsstatus anzeigen" auf "Start". Im Dialogfeld werden Informationsmeldungen zur Überprüfung angezeigt.
Wenn keine Meldungen zur Überprüfung angezeigt werden, hat der Agent bereits eine nachfolgende Nachricht protokolliert. Zeigen Sie in diesem Fall die Überprüfungsergebnisse im Replikationsmonitor an. Weitere Informationen finden Sie in den Anweisungen zur Verwendung des Replikationsmonitors in diesem Thema.
Verwenden von Transact-SQL (T-SQL)
Führen Sie beim Publisher in der Publikationsdatenbank sp_validatemergepublication (Transact-SQL) aus. Geben Sie @publication und einen der folgenden Werte für @level an:
- 1 – Nur-Zeilenanzahl-Überprüfung.
- 3 – Überprüfung der binären Prüfsumme der Zeilenanzählung.
Dadurch werden alle Abonnements für die Überprüfung markiert.
Starten Sie den Zusammenführungs-Agenten für jedes Abonnement. Weitere Informationen finden Sie unter Synchronisieren eines Pullabonnements und Synchronisieren eines Pushabonnements.
Überprüfen Sie die Agentenausgabe auf das Ergebnis der Validierung. Weitere Informationen finden Sie unter Daten beim Abonnenten validieren.
Für ein einzelnes Push-Abonnement einer Merge-Publikation
Verwenden des Replikationsmonitors
- Erweitern Sie im Replikationsmonitor eine Publisher-Gruppe im linken Bereich, erweitern Sie einen Publisher, und klicken Sie dann auf eine Publikation.
- Klicken Sie auf die Registerkarte Alle Abonnements .
- Klicken Sie mit der rechten Maustaste auf das Abonnement, das Sie überprüfen möchten, und klicken Sie dann auf "Abonnement überprüfen".
- Wählen Sie im Dialogfeld " Abonnement überprüfen " die Option "Dieses Abonnement überprüfen" aus.
- Klicken Sie zum Angeben des Auszuführenden Gültigkeitstyps (Zeilenanzahl oder Zeilenanzahl und Prüfsumme) auf "Optionen", und geben Sie dann optionen im Dialogfeld " Abonnementüberprüfungsoptionen " an.
- Klicke auf OK.
- Klicken Sie auf die Registerkarte Alle Abonnements .
- Überprüfungsergebnisse anzeigen:
- Wenn der Agent nicht ausgeführt wird, klicken Sie mit der rechten Maustaste auf das Abonnement, und klicken Sie dann auf Synchronisierung starten.
- Klicken Sie mit der rechten Maustaste auf das Abonnement, und klicken Sie dann auf "Details anzeigen".
- Zeigen Sie Informationen auf der Registerkarte "Synchronisierungsverlauf " in der letzten Nachricht des ausgewählten Sitzungstextbereichs an.
Für alle Push-Abonnements einer Merge-Publikation
Verwenden des Replikationsmonitors
- Erweitern Sie im Replikationsmonitor eine Publisher-Gruppe im linken Bereich, und erweitern Sie dann einen Publisher.
- Klicken Sie mit der rechten Maustaste auf die Publikation, für die Sie Abonnements überprüfen möchten, und klicken Sie dann auf " Alle Abonnements überprüfen".
- Geben Sie im Dialogfeld "Alle Abonnements überprüfen" den Typ der auszuführenden Überprüfung an (Zeilenanzahl oder Zeilenanzahl und Prüfsumme).
- Klicke auf OK.
- Klicken Sie auf die Registerkarte Alle Abonnements .
- Überprüfungsergebnisse anzeigen. Für jedes Pushabonnement:
- Wenn der Agent nicht ausgeführt wird, klicken Sie mit der rechten Maustaste auf das Abonnement, und klicken Sie dann auf " Synchronisieren starten".
- Klicken Sie mit der rechten Maustaste auf das Abonnement, und klicken Sie dann auf "Details anzeigen".
- Zeigen Sie Informationen auf der Registerkarte "Synchronisierungsverlauf " in der letzten Nachricht des ausgewählten Sitzungstextbereichs an.
Überprüfen von Daten mithilfe von Merge-Agent-Parametern
Starten Sie den Replikations-Agenten beim Abonnenten (Pullabonnement) oder am Verteiler (Pushabonnement) über die Eingabeaufforderung auf eine der folgenden Arten.
- Angeben eines Werts von 1 (Zeilenanzahl) oder 3 (Zeilenanzahl und binäre Prüfsumme) für den Parameter -Validate .
- Angabe der Zeilenanzahlvalidierung oder Zeilenanzahl- und Prüfsummenvalidierung für den Parameter -ProfileName.
Weitere Informationen finden Sie unter Synchronisieren eines Pullabonnements oder Synchronisieren eines Pushabonnements.
Verwenden von Replikationsverwaltungsobjekten (RMO)
Mit der Replikation können Sie Replikationsverwaltungsobjekte (Replication Management Objects, RMO) programmgesteuert überprüfen, ob die Daten am Abonnenten mit den Daten beim Publisher übereinstimmen. Die verwendeten Objekte hängen vom Typ der Replikationstopologie ab. Die Transaktionsreplikation erfordert eine Überprüfung aller Abonnements für eine Publikation.
Hinweis
Ein Beispiel finden Sie unter Beispiel (RMO) weiter unten in diesem Abschnitt.
So überprüfen Sie Daten für alle Artikel in einer Transaktionsveröffentlichung
Erstellen Sie mithilfe der ServerConnection Klasse eine Verbindung mit dem Publisher.
Erstellen Sie eine Instanz der TransPublication Klasse. Legen Sie die Eigenschaften Name und DatabaseName für die Publikation fest. Legen Sie die ConnectionContext Eigenschaft auf die in Schritt 1 erstellte Verbindung fest.
Rufen Sie die LoadProperties Methode auf, um die verbleibenden Eigenschaften des Objekts abzurufen. Wenn diese Methode zurückgegeben wird
false, wurden entweder die Publikationseigenschaften in Schritt 2 falsch definiert, oder die Publikation ist nicht vorhanden.Rufen Sie die ValidatePublication-Methode auf. Übergeben Sie Folgendes:
- ValidationOption
- ValidationMethod
- Ein Boolescher Wert, der angibt, ob der Verteilungs-Agent nach Abschluss der Überprüfung beendet werden soll.
Dadurch werden die Artikel zur Überprüfung markiert.
Wenn sie noch nicht ausgeführt wird, starten Sie den Verteilungs-Agent, um jedes Abonnement zu synchronisieren. Weitere Informationen finden Sie unter Synchronisieren eines Pushabonnements oder Synchronisieren eines Pullabonnements. Das Ergebnis des Überprüfungsvorgangs wird in der Agentenhistorie festgehalten. Weitere Informationen finden Sie unter Monitoring Replication.
So überprüfen Sie Daten in allen Abonnements für eine Zusammenführungsveröffentlichung
- Erstellen Sie mithilfe der ServerConnection Klasse eine Verbindung mit dem Publisher.
- Erstellen Sie eine Instanz der MergePublication Klasse. Legen Sie die Eigenschaften Name und DatabaseName für die Publikation fest. Legen Sie die ConnectionContext Eigenschaft auf die in Schritt 1 erstellte Verbindung fest.
- Rufen Sie die LoadProperties Methode auf, um die verbleibenden Eigenschaften des Objekts abzurufen. Wenn diese Methode zurückgegeben wird
false, wurden entweder die Publikationseigenschaften in Schritt 2 falsch definiert, oder die Publikation ist nicht vorhanden. - Rufen Sie die ValidatePublication-Methode auf. Übergeben Sie die gewünschte ValidationOption.
- Führen Sie den Merge-Agent für jedes Abonnement aus, um die Überprüfung zu starten, oder warten Sie, bis der nächste geplante Lauf des Agents erfolgt. Weitere Informationen finden Sie unter Synchronisieren eines Pullabonnements und Synchronisieren eines Pushabonnements. Das Ergebnis der Überprüfung wird im Agentenverlauf gespeichert, den Sie mit dem Replikationsmonitor anzeigen. Weitere Informationen finden Sie unter Monitoring Replication.
So überprüfen Sie Daten in einem einzigen Abonnement für eine Zusammenführungsveröffentlichung
- Erstellen Sie mithilfe der ServerConnection Klasse eine Verbindung mit dem Publisher.
- Erstellen Sie eine Instanz der MergePublication Klasse. Legen Sie die Name und DatabaseName Eigenschaften für die Publikation fest. Legen Sie die ConnectionContext Eigenschaft auf die in Schritt 1 erstellte Verbindung fest.
- Rufen Sie die LoadProperties Methode auf, um die verbleibenden Eigenschaften des Objekts abzurufen. Wenn diese Methode zurückgegeben wird
false, wurden entweder die Publikationseigenschaften in Schritt 2 falsch definiert, oder die Publikation ist nicht vorhanden. - Rufen Sie die ValidateSubscription-Methode auf. Übergeben Sie den Namen des Abonnenten und der Abonnementdatenbank, die validiert wird, und das gewünschte ValidationOption.
- Führen Sie den Zusammenführungs-Agent für das Abonnement aus, um die Überprüfung zu starten, oder warten Sie, bis der nächste geplante Agentendurchlauf. Weitere Informationen finden Sie unter Synchronisieren eines Pullabonnements und Synchronisieren eines Pushabonnements. Das Ergebnis des Überprüfungsvorgangs wird in den Agentverlauf geschrieben, den Sie mithilfe des Replikationsmonitors anzeigen. Weitere Informationen finden Sie unter Monitoring Replication.
Beispiel (RMO)
In diesem Beispiel werden alle Abonnements für eine transaktionale Veröffentlichung zur Überprüfung der Zeilenanzahl markiert.
// 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 Zusammenführungsveröffentlichung zur Validierung der Zeilenanzahl markiert.
// 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