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.
Gilt für:SQL Server
Azure SQL-Datenbank
In diesem Thema wird beschrieben, wie Sie Daten auf Abonnentenebene in SQL Server mithilfe von SQL Server Management Studio, Transact-SQL oder Replikationsverwaltungsobjekten (RMO) validieren.
Mit der Transaktions- und Mergereplikation können Sie überprüfen, ob die Daten beim Abonnenten mit denen beim Herausgeber ü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. Hiermit wird überprüft, ob die Tabelle auf dem Abonnenten dieselbe Anzahl von Zeilen wie die Tabelle auf dem Verleger hat, es wird jedoch nicht überprüft, ob der Inhalt der Zeilen übereinstimmt. 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. Zusätzlich zum Ermitteln der Zeilenanzahl beim Publisher und Subscriber wird mithilfe des Prüfsummenalgorithmus eine Prüfsumme aller Daten berechnet. Ist die Zeilenanzahl fehlerhaft, wird die Berechnung der Prüfsumme nicht ausgeführt.
Zusätzlich zur Überprüfung, dass die Daten beim Abonnenten und Verleger übereinstimmen, bietet die Mergereplikation die Möglichkeit, zu überprüfen, ob die Daten für jeden Abonnenten korrekt partitioniert sind. Weitere Informationen finden Sie unter Überprüfen von Partitionsinformationen für einen Mergeabonnenten.
Hinweis
Azure SQL Managed Instance kann als Herausgeber, Distributor und Abonnent für die Momentaufnahmen- und die Transaktionsreplikation fungieren. Datenbanken in Azure SQL-Datenbank können nur Pushabonnenten für die Momentaufnahme- und Transaktionsreplikation sein. Weitere Informationen finden Sie unter „Transaktionsreplikation mit Azure SQL-Datenbank und Azure SQL Managed Instance“.
Funktionsweise der Datenüberprüfung
SQL Server überprüft Daten, indem es auf Herausgeberebene die Zeilenanzahl bzw. eine Prüfsumme berechnet und dann diese Werte mit der für den Abonnenten berechneten Zeilenanzahl bzw. Prüfsumme vergleicht. Ein Wert wird für die gesamte Publikationstabelle berechnet, und ein Wert wird für die gesamte Abonnementtabelle berechnet; Daten in Spalten des Typs text, ntext oder image werden bei den Berechnungen jedoch nicht berücksichtigt.
Während die Berechnungen ausgeführt werden, werden vorübergehend Shared Locks auf Tabellen gesetzt, für die Zeilenanzahlen oder Prüfsummen ermittelt werden; die Berechnungen werden jedoch schnell abgeschlossen, und die Shared Locks werden in der Regel innerhalb weniger Sekunden wieder entfernt.
Bei Verwendung binärer Prüfsummen erfolgt die 32-Bit-Redundanzprüfung (CRC) spaltenweise und nicht als CRC für die physische Zeile auf der Datenseite. 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:
Ein einzelnes Abonnement oder alle Abonnements einer Veröffentlichung werden zur Validierung gekennzeichnet. Die Abonnements, die überprüft werden sollen, können Sie in den Dialogfeldern Abonnement überprüfen, Abonnements überprüfen und Alle Abonnements überprüfen, die über den Ordner Lokale Veröffentlichungen und Lokale Abonnements in Microsoft SQL Server Management Studio verfügbar sind. Abonnements können auch auf der Registerkarte Alle Abonnements, auf der Registerkarte Überwachungsliste für Abonnements und über den Knoten Veröffentlichungen im Replication Monitor markiert werden. Informationen zum Starten des Replikationsmonitors finden Sie unter Starten des Replikationsmonitors.
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 läuft in der Regel kontinuierlich; in diesem Fall erfolgt die Validierung sofort. Der Merge-Agent wird in der Regel bei Bedarf ausgeführt; in diesem Fall erfolgt die Validierung, nachdem Sie den Agent ausführen.
Anzeigen der Überprüfungsergebnisse:
- In den Detailfenstern des Replikationsmonitors: auf der Registerkarte Verlauf von Verteiler zu Abonnent 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
Bedenken Sie im Zusammenhang mit dem Überprüfen von Daten Folgendes:
- Sie müssen bei den Abonnenten sämtliche Aktualisierungsvorgänge beenden, bevor Sie Daten überprüfen (es ist nicht erforderlich, die Aktivität auf dem Publisher anzuhalten, während die Überprüfung erfolgt).
- 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 nur Tabellen; es wird nicht überprüft, ob Artikel, die nur das Schema betreffen (z. B. gespeicherte Prozeduren), beim Verleger und Abonnenten identisch sind.
- Binäre Prüfsummen können für jede veröffentlichte Tabelle verwendet werden. Die Prüfsumme kann Tabellen mit Spaltenfiltern oder logische Tabellenstrukturen nicht validieren, bei denen sich die Spalten-Offsets unterscheiden (aufgrund von 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 zum Verhalten finden Sie unter CHECKSUM (Transact-SQL) und BINARY_CHECKSUM (Transact-SQL).
- Die Validierung mithilfe von binären Prüfsummen oder Prüfsummen kann fälschlicherweise einen Fehler melden, wenn sich die Datentypen beim Subscriber von denen beim Publisher unterscheiden. 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 Server fest.
- Sie legen den Veröffentlichungskompatibilitätsgrad für eine Mergeverö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.
- Ein Abonnement manuell initialisieren und beim Abonnenten unterschiedliche Datentypen verwenden.
- Binäre Prüfsummen und Prüfsummenüberprüfungen werden für transformierbare Abonnements bei der Transaktionsreplikation nicht unterstützt.
- Bei Daten, die auf Nicht-SQL Server-Abonnenten repliziert wurden, kann keine solche Überprüfung stattfinden.
- 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. Informationen zum Verwenden dieses Hilfsprogramms finden Sie unter Überprüfen replizierter Tabellen auf Unterschiede (Replikationsprogrammierung).
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. Das oben aufgeführte Anleitungsthema zeigt, wie Sie die Validierung ausführen und die Ergebnisse anzeigen können.
Um Validierungsfehler zu behandeln, beachten Sie Folgendes:
Konfigurieren Sie die Replikationswarnung mit dem Namen Replikation: Fehler bei der Datenüberprüfung auf dem Abonnenten, damit Sie über diesen Fehler benachrichtigt werden. Weitere Informationen finden Sie unter Konfigurieren von vordefinierten Replikationswarnungen (SQL Server Management Studio)
Ist ein negatives Überprüfungsergebnis ein Problem für Ihre Anwendung? Wenn der Validierungsfehler ein Problem darstellt, aktualisieren Sie die Daten manuell, sodass sie synchronisiert werden, oder initialisieren Sie das Abonnement erneut:
Daten können mit dem Hilfsprogramm "tablediff"aktualisiert werden. Weitere Informationen zum Verwenden dieses Hilfsprogramms finden Sie unter Überprüfen replizierter Tabellen auf Unterschiede (Replikationsprogrammierung).
Weitere Informationen zur Neuinitialisierung finden Sie unter Neuinitialisieren von Abonnements.
Artikel in der Transaktionsreplikation
Verwendung von SQL Server Management Studio
- Stellen Sie mit dem Herausgeber in SQL Server Management Studio eine Verbindung her, und erweitern Sie dann den Serverknoten.
- Erweitern Sie den Ordner Replikation , und erweitern Sie dann den Ordner Lokale Veröffentlichungen .
- 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.
- Wählen Sie im Dialogfeld Abonnements überprüfen die zu überprüfenden Abonnements aus:
- Wählen Sie Alle SQL Server-Abonnements validieren aus.
- Wählen Sie Folgende Abonnements überprüfenaus, und wählen Sie dann ein oder mehrere Abonnements aus.
- 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.
- Wählen Sie OK aus.
- Zeigen Sie die Überprüfungsergebnisse Im Replikationsmonitor oder im Dialogfeld Synchronisierungsstatus anzeigen an: Für jedes Abonnement:
- Erweitern Sie die Veröffentlichung, 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 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 Vorgehensweisen für den Replikationsmonitor in diesem Thema.
Verwenden von Transact-SQL
Alle Artikel
Führen Sie beim Verleger in der Veröffentlichungsdatenbank sp_publication_validation (Transact-SQL) aus. Geben Sie
@publicationund einen der folgenden Werte für@rowcount_onlyan:- 1 - nur Überprüfung der Zeilenanzahl (Standardeinstellung)
- 2 - Zeilenanzahl und binäre Prüfsumme
Hinweis
Beim Ausführen von sp_publication_validation (Transact-SQL) wird sp_article_validation (Transact-SQL) für jeden Artikel in der Publikation 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.
(Optional) Starten Sie den Verteilungs-Agenten für jedes Abonnement, falls er nicht bereits läuft. Weitere Informationen finden Sie unter Synchronize a Pull Subscription und Synchronize a Push Subscription.
Überprüfen Sie die Ausgabe des Agenten auf das Ergebnis der Validierung.
Einzelner Artikel
Führen Sie beim Publisher 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, benötigen Sie SELECT-Berechtigungen für alle Spalten in den veröffentlichten Basistabellen.
(Optional) Starten Sie den Verteilungs-Agenten für jedes Abonnement, falls er nicht bereits läuft. Weitere Informationen finden Sie unter Synchronize a Pull Subscription und Synchronize a Push Subscription.
Überprüfen Sie die Ausgabe des Agenten auf das Ergebnis der Validierung.
Einzelner Abonnent
Öffnen Sie beim Verleger in der Veröffentlichungsdatenbank eine explizite Transaktion mit BEGIN TRANSACTION (Transact-SQL).
Führen Sie beim Herausgeber in der 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.(Optional) Wiederholen Sie Schritt 2 für jedes zu überprüfende Abonnement.
Führen Sie beim 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, benötigen Sie SELECT-Berechtigungen für alle Spalten in den veröffentlichten Basistabellen.
Führen Sie auf Herausgeberseite für die Veröffentlichungsdatenbank mit COMMIT TRANSACTION (Transact-SQL) einen Commit für die Transaktion aus.
(Optional) Wiederholen Sie die Schritte 1 bis 5 für jeden zu überprüfenden Artikel.
(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.
Überprüfen Sie die Ausgabe des Agenten auf das Ergebnis der Validierung. Weitere Informationen finden Sie unter Daten beim Abonnenten validieren.
Alle Pushabonnements für eine transaktionale Veröffentlichung
Verwenden von Replikationsmonitor
Erweitern Sie im Replikationsmonitor im linken Bereich eine Verlegergruppe, und erweitern Sie dann einen Verleger.
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.
Wählen Sie im Dialogfeld Abonnements überprüfen die zu überprüfenden Abonnements aus:
- Wählen Sie Alle SQL Server-Abonnements validieren aus.
- Wählen Sie Folgende Abonnements überprüfenaus, und wählen Sie dann ein oder mehrere Abonnements aus.
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.
Wählen Sie OK aus.
Klicken Sie auf die Registerkarte Alle Abonnements .
Zeigen Sie die Überprüfungsergebnisse an. Führen Sie für jedes Pushabonnement folgende Vorgänge aus:
- 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 Verteiler-zu-Abonnent-Verlauf im Textbereich Aktionen in der ausgewählten Sitzung an.
Für ein Einzelabonnement einer zusammengeführten Veröffentlichung
Verwendung von SQL Server Management Studio
Stellen Sie mit dem Herausgeber in SQL Server Management Studio eine Verbindung her, und erweitern Sie dann den Serverknoten.
Erweitern Sie den Ordner Replikation , und erweitern Sie dann den Ordner Lokale Veröffentlichungen .
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.
Wählen Sie im Dialogfeld Abonnement überprüfen die Option Dieses Abonnement überprüfenaus.
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.
Wählen Sie OK aus.
Zeigen Sie die Überprüfungsergebnisse Im Replikationsmonitor oder im Dialogfeld Synchronisierungsstatus anzeigen an:
- Erweitern Sie die Veröffentlichung, 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 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 Vorgehensweisen für den Replikationsmonitor in diesem Thema.
Für alle Abonnements von Merge Publication
Verwendung von SQL Server Management Studio
Stellen Sie mit dem Herausgeber in SQL Server Management Studio eine Verbindung her, und erweitern Sie dann den Serverknoten.
Erweitern Sie den Ordner Replikation , und erweitern Sie dann den Ordner Lokale Veröffentlichungen .
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.
Geben Sie im Dialogfeld Alle Abonnements überprüfen den Typ der durchzuführenden Überprüfung (Zeilenanzahl oder Zeilenanzahl und Prüfsumme) an.
Wählen Sie OK aus.
Zeigen Sie die Überprüfungsergebnisse Im Replikationsmonitor oder im Dialogfeld Synchronisierungsstatus anzeigen an: Für jedes Abonnement:
- Erweitern Sie die Veröffentlichung, 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 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 Vorgehensweisen für den Replikationsmonitor in diesem Thema.
Für ein einzelnes Pushabonnement für eine Mergepublikation
Verwenden von Replikationsmonitor
- Erweitern Sie im Replikationsmonitor im linken Bereich eine Verlegergruppe, erweitern Sie einen Verleger, und klicken Sie dann auf eine Veröffentlichung.
- 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üfenaus.
- 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.
- Wählen Sie OK aus.
- Klicken Sie auf die Registerkarte Alle Abonnements .
- Zeigen Sie die Überprüfungsergebnisse an:
- 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 die Informationen auf der Registerkarte Synchronisierungsverlauf im Textbereich Letzte Meldung der ausgewählten Sitzung an.
Verwenden von Transact-SQL
Führen Sie beim Publisher 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 - Validierung nur anhand der Zeilenanzahl.
- 3 - Validierung der Zeilenanzahl und der binären Prüfsumme
Dadurch wird das ausgewählte Abonnement zur Überprüfung gekennzeichnet.
Starten Sie den Merge-Agent für jedes Abonnement. Weitere Informationen finden Sie unter Synchronize a Pull Subscription und Synchronize a Push Subscription.
Überprüfen Sie die Ausgabe des Agenten auf das Ergebnis der Validierung.
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.
Für alle Pushabonnements für eine Mergeveröffentlichung
Verwenden von Replikationsmonitor
- Erweitern Sie im Replikationsmonitor im linken Bereich eine Verlegergruppe, und erweitern Sie dann einen Verleger.
- 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.
- Geben Sie im Dialogfeld Alle Abonnements überprüfen den Typ der durchzuführenden Überprüfung (Zeilenanzahl oder Zeilenanzahl und Prüfsumme) an.
- Wählen Sie OK aus.
- Klicken Sie auf die Registerkarte Alle Abonnements .
- Zeigen Sie die Überprüfungsergebnisse an. Führen Sie für jedes Pushabonnement folgende Vorgänge aus:
- 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 die Informationen auf der Registerkarte Synchronisierungsverlauf im Textbereich Letzte Meldung der ausgewählten Sitzung an.
Verwenden von Transact-SQL
Führen Sie beim Herausgeber in der Veröffentlichungsdatenbank sp_validatemergepublication (Transact-SQL) aus. Geben Sie
@publicationund einen der folgenden Werte für@levelan:- 1 - Validierung nur anhand der Zeilenanzahl.
- 3 - Validierung der Zeilenanzahl und der binären Prüfsumme
Dadurch werden alle Abonnements zur Überprüfung gekennzeichnet.
Starten Sie den Merge-Agent für jedes Abonnement. Weitere Informationen finden Sie unter Synchronize a Pull Subscription und Synchronize a Push Subscription.
Überprüfen Sie die Ausgabe des Agenten auf das Ergebnis der Validierung. Weitere Informationen finden Sie unter Daten beim Abonnenten validieren.
Überprüfen von Daten mithilfe von Merge-Agent-Parametern
Starten Sie den Merge-Agent auf dem Abonnenten (Pullabonnement) oder beim Verteiler (Pushabonnement) über die Befehlszeile auf eine der folgenden Arten.
- Durch Angeben eines Werts von 1 (Zeilenanzahl) oder 3 (Zeilenanzahl und binäre Prüfsumme) für den -Validate -Parameter.
- Angeben von Überprüfung der Zeilenanzahl 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
Erstellen Sie eine Verbindung mit dem Verleger, indem Sie die ServerConnection -Klasse verwenden.
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.
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.
Rufen Sie die ValidatePublication-Methode auf. Übergeben Sie Folgendes:
Ein boolescher Wert, der angibt, ob der Verteilungs-Agent nach Abschluss der Überprüfung beendet werden soll.
Dadurch werden die Artikel zur Überprüfung gekennzeichnet.
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
Erstellen Sie eine Verbindung mit dem Verleger, indem Sie die ServerConnection -Klasse verwenden.
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.
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.
Rufen Sie die ValidatePublication-Methode auf. Übergeben Sie die gewünschte ValidationOption.
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 des Validierungsvorgangs wird in den Agentverlauf geschrieben, den Sie mit dem Replikationsmonitor anzeigen können. Weitere Informationen finden Sie unter Monitoring Replication.
So überprüfen Sie die Daten in einem einzelnen Abonnement für eine Mergeveröffentlichung
Erstellen Sie eine Verbindung mit dem Verleger, indem Sie die ServerConnection -Klasse verwenden.
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.
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.
Rufen Sie die ValidateSubscription-Methode auf. Übergeben Sie den Namen des Abonnenten und der zu überprüfenden Abonnementdatenbank sowie das gewünschte ValidationOption.
Führen Sie den Merge-Agent für das Abonnement aus, um die Validierung zu starten, oder warten Sie bis zum nächsten geplanten Agentenlauf. Weitere Informationen finden Sie unter Synchronize a Pull Subscription und Synchronize a Push Subscription. Das Ergebnis des Validierungsvorgangs wird in den Agentverlauf eingetragen, den Sie mithilfe des Replikationsmonitors anzeigen können. Weitere Informationen finden Sie unter Monitoring Replication.
Beispiel (RMO)
In diesem Beispiel werden alle Abonnements einer transaktionalen Veröffentlichung für die Überprüfung der Zeilenanzahl markiert.
// 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 einer Mergeveröffentlichung für die Validierung der Zeilenanzahl 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