Programmgesteuertes Überwachen der Replikation
Gilt für: SQL Server
Azure SQL Managed Instance
Der Replikationsmonitor ist ein grafisches Tool, mit dem Sie eine Replikationstopologie überwachen können. Mithilfe von gespeicherten Transact-SQL-Replikationsprozeduren oder Replikationsverwaltungsobjekten (RMO) können Sie programmgesteuert auf diese Überwachungsdaten zugreifen. Diese Objekte ermöglichen das Programmieren der folgenden Tasks:
Überwachen des Status von Verlegern, Veröffentlichungen und Abonnements.
Überwachen von Merge-Agentsitzungen auf mindestens einem Abonnenten.
Überwachen von Transaktionsbefehlen, die darauf warten, auf mindestens einem Abonnenten angewendet zu werden.
Definieren von Schwellenwertmetriken, um bestimmen zu können, wann eine Veröffentlichung einen Eingriff erfordert.
Überwachen des Status von Überwachungstoken.
In diesem Thema:
Replikationsverwaltungsobjekte (RMO)
Transact-SQL
So überwachen Sie Verleger, Veröffentlichungen und Abonnements auf dem Verteiler
Führen Sie auf dem Verteiler für die Verteilerdatenbank sp_replmonitorhelppublisheraus. Dadurch werden Überwachungsinformationen zu allen Verlegern zurückgegeben, die diesen Verteiler verwenden. Um das Resultset auf nur einen Verleger zu beschränken, geben Sie @publisheran.
Führen Sie auf dem Verteiler für die Verteilerdatenbank sp_replmonitorhelppublicationaus. Dadurch werden Überwachungsinformationen zu allen Veröffentlichungen zurückgegeben, die diesen Verteiler verwenden. Um das Resultset auf nur einen Verleger, eine Veröffentlichung oder eine veröffentlichte Datenbank zu beschränken, geben Sie @publisher, @publicationbzw. @publisher_dban.
Führen Sie auf dem Verteiler für die Verteilerdatenbank sp_replmonitorhelpsubscriptionaus. Dadurch werden Überwachungsinformationen zu allen Abonnements zurückgegeben, die diesen Verteiler verwenden. Um das Resultset auf Abonnements zu beschränken, die nur zu einem Verleger, einer Veröffentlichung oder einer veröffentlichten Datenbank gehören, geben Sie @publisher, @publicationbzw. @publisher_dban.
So überwachen Sie Transaktionsbefehle, die darauf warten, auf dem Abonnenten angewendet zu werden
- Führen Sie auf dem Verteiler für die Verteilerdatenbank sp_replmonitorsubscriptionpendingcmdsaus. Dadurch werden Überwachungsinformationen zu allen Befehlen zurückgegeben, die für alle Abonnements ausstehen, die diesen Verteiler verwenden. Um das Resultset auf Befehle zu beschränken, die für Abonnements ausstehen, die nur zu einem Verleger, einem Abonnenten, einer Veröffentlichung oder einer veröffentlichten Datenbank gehören, geben Sie @publisher, @subscriber, @publicationbzw. @publisher_dban.
So überwachen Sie Mergeänderungen, die darauf warten, hoch- oder heruntergeladen zu werden
Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_showpendingchangesaus. Dadurch wird ein Resultset mit Informationen zu Änderungen zurückgegeben, die darauf warten, auf Abonnenten repliziert zu werden. Um das Resultset auf Änderungen zu beschränken, die nur zu einer Veröffentlichung oder einem Artikel gehören, geben Sie @publication bzw. @articlean.
Führen Sie auf dem Abonnenten für die Abonnementdatenbank sp_showpendingchangesaus. Dadurch wird ein Resultset mit Informationen zu Änderungen zurückgegeben, die darauf warten, auf dem Verleger repliziert zu werden. Um das Resultset auf Änderungen zu beschränken, die nur zu einer Veröffentlichung oder einem Artikel gehören, geben Sie @publication bzw. @articlean.
So überwachen Sie Merge-Agentsitzungen
Führen Sie auf dem Verteiler für die Verteilerdatenbank sp_replmonitorhelpmergesessionaus. Dadurch werden zu allen Merge-Agentsitzungen für alle Abonnements, die diesen Verteiler verwenden, Überwachungsinformationen, beispielsweise Session_id, zurückgegeben. Sie können Session_id auch ermitteln, indem Sie eine Abfrage der MSmerge_sessions -Systemtabelle ausführen.
Führen Sie auf dem Verteiler für die Verteilerdatenbank sp_replmonitorhelpmergesessiondetailaus. Geben Sie einen Wert Session_id aus Schritt 1 für @session_idan. Dadurch werden ausführliche Überwachungsinformationen zu der Sitzung angezeigt.
Wiederholen Sie Schritt 2 für jede Sitzung, die von Interesse ist.
So überwachen Sie Merge-Agentsitzungen für Pullabonnements auf dem Abonnenten
Führen Sie auf dem Abonnenten für die Abonnementdatenbank sp_replmonitorhelpmergesessionaus. Geben Sie für ein bestimmtes Abonnement @publisher, @publicationund den Namen der Veröffentlichungsdatenbank für @publisher_dban. Dadurch werden Überwachungsinformationen zu den letzten fünf Merge-Agentsitzungen für dieses Abonnement zurückgegeben. Beachten Sie im Resultset den Wert Session_id für Sitzungen, die von Interesse sind.
Führen Sie auf dem Abonnenten für die Abonnementdatenbank sp_replmonitorhelpmergesessiondetailaus. Geben Sie einen Wert Session_id aus Schritt 1 für @session_idan. Dadurch werden ausführliche Überwachungsinformationen zu der Sitzung angezeigt.
Wiederholen Sie Schritt 2 für jede Sitzung, die von Interesse ist.
So können Sie die Schwellenwertmetriken für die Überwachung für eine Veröffentlichung anzeigen und ändern
Führen Sie auf dem Verteiler für die Verteilerdatenbank sp_replmonitorhelppublicationthresholdsaus. Dadurch werden Überwachungsschwellenwerte zurückgegeben, die für alle Veröffentlichungen festgelegt wurden, die diesen Verteiler verwenden. Um das Resultset auf Überwachungsschwellenwerte für Veröffentlichungen festzulegen, die nur zu einem Verleger, einer veröffentlichten Datenbank oder einer Veröffentlichung gehören, geben Sie @publisher, @publisher_dbbzw. @publicationan. Beachten Sie den Wert Metric_id für alle Schwellenwerte, die geändert werden müssen. Weitere Informationen finden Sie unter Set Thresholds and Warnings in Replication Monitor.
Führen Sie auf dem Verteiler für die Verteilerdatenbank sp_replmonitorchangepublicationthresholdaus. Geben Sie bei Bedarf Folgendes an:
Den in Schritt 1 ermittelten Metric_id -Wert für @metric_id.
Einen neuen Wert für die Schwellenwertmetrik für die Überwachung für @value.
Einen Wert 1 für @shouldalert für eine Warnung, die protokolliert wird, wenn dieser Schwellenwert erreicht wird, oder einen Wert 0 , wenn keine Warnung erforderlich ist.
Der Wert 1 für @mode , um die Schwellenwertmetrik für die Überwachung zu aktivieren, oder der Wert 2 , um diese zu deaktivieren.
Replikationsverwaltungsobjekte (RMO)
So überwachen Sie ein Abonnement für eine Mergeveröffentlichung auf dem Abonnenten
Erstellen Sie eine Verbindung mit dem Abonnenten, indem Sie die ServerConnection -Klasse verwenden.
Erstellen Sie eine Instanz der MergeSubscriberMonitor -Klasse, und legen Sie die Eigenschaften Publisher, Publication, PublisherDBund SubscriberDB für das Abonnement fest, und legen Sie die ConnectionContext -Eigenschaft auf die in Schritt 1 erstellte ServerConnection fest.
Rufen Sie eine der folgenden Methoden auf, um Informationen zu Merge-Agentsitzungen für dieses Abonnement zurückzugeben:
GetSessionsSummary - gibt ein Array von MergeSessionSummary -Objekten mit Informationen zu maximal den letzten fünf Merge-Agentsitzungen zurück. Beachten Sie den SessionId -Wert für alle Sitzungen, die von Interesse sind.
GetSessionsSummary - gibt ein Array von MergeSessionSummary -Objekten mit Informationen zu Merge-Agentsitzungen zurück, die in der Anzahl der letzten Stunden aufgetreten sind, die als hours -Parameter übergeben wurde (maximal die letzten fünf Sitzungen). Beachten Sie den SessionId -Wert für alle Sitzungen, die von Interesse sind.
GetLastSessionSummary - gibt ein MergeSessionSummary -Objekt mit Informationen zu der letzten Merge-Agentsitzung zurück. Beachten Sie den SessionId -Wert für diese Sitzung.
GetSessionsSummaryDataSet - gibt ein DataSet -Objekt mit Informationen zu maximal den letzten fünf Merge-Agentsitzungen zurück (eine pro Zeile). Beachten Sie den Wert der Session_id -Spalte für alle Sitzungen, die von Interesse sind.
GetLastSessionSummaryDataRow - gibt ein DataRow -Objekt mit Informationen zu der letzten Merge-Agentsitzung zurück. Beachten Sie den Wert der Session_id -Spalte für diese Sitzung.
(Optional) Rufen Sie RefreshSessionSummary auf, um die Daten für das MergeSessionSummary -Objekt zu aktualisieren, das als mss, übergeben wurde, oder rufen Sie RefreshSessionSummary auf, um die Daten im DataRow -Objekt zu aktualisieren, das als drRefreshaus.
Rufen Sie mithilfe der in Schritt 3 abgerufenen Sitzungs-ID eine der folgenden Methoden auf, um Informationen zu den Details einer bestimmten Sitzung zurückzugeben:
GetSessionDetails - gibt ein Array von MergeSessionDetail -Objekten für die angegebene SessionIdaus.
GetSessionDetailsDataSet - gibt ein DataSet -Objekt mit Informationen für die angegebene SessionIdaus.
So überwachen Sie die Replikationseigenschaften für alle Veröffentlichungen auf einem Verteiler
Erstellen Sie eine Verbindung mit dem Verteiler, indem Sie die ServerConnection -Klasse verwenden.
Erstellen Sie eine Instanz der ReplicationMonitor-Klasse.
Legen Sie die ConnectionContext -Eigenschaft auf die in Schritt 1 erstellte ServerConnection fest.
Rufen Sie die LoadProperties -Methode auf, um die Eigenschaften des Objekts abzurufen.
Führen Sie mindestens eine der folgenden Methoden aus, um Replikationsinformationen für alle Verleger zurückzugeben, die diesen Verteiler verwenden:
EnumDistributionAgents - gibt ein DataSet -Objekt zurück, das Informationen zu allen Verteilungs-Agents auf diesem Verteiler enthält.
EnumErrorRecords - gibt ein DataSet -Objekt zurück, das Informationen zu auf dem Verteiler gespeicherten Fehlern enthält.
EnumLogReaderAgents - gibt ein DataSet -Objekt zurück, das Informationen zu allen Protokolllese-Agents auf dem Verteiler enthält.
EnumMergeAgents - gibt ein DataSet -Objekt zurück, das Informationen zu allen Merge-Agents auf dem Verteiler enthält.
EnumMiscellaneousAgents - gibt ein DataSet -Objekt zurück, das Informationen zu allen anderen Replikations-Agents auf dem Verteiler enthält.
EnumPublishers - gibt ein DataSet -Objekt zurück, das Informationen zu allen Verlegern auf diesem Verteiler enthält.
EnumPublishers2 - gibt ein DataSet -Objekt zurück, das die Verleger zurückgibt, von denen dieser Verteiler verwendet wird.
EnumQueueReaderAgents - gibt ein DataSet -Objekt zurück, das Informationen zu allen Warteschlangenlese-Agents auf dem Verteiler enthält.
EnumQueueReaderAgentSessionDetails - gibt ein DataSet -Objekt zurück, das Details zu dem angegebenen Warteschlangenlese-Agent und der angegebenen Sitzung enthält.
EnumQueueReaderAgentSessions - gibt ein DataSet -Objekt zurück, das Sitzungsinformationen zu dem angegebenen Warteschlangenlese-Agent enthält.
EnumSnapshotAgents - gibt ein DataSet -Objekt zurück, das Informationen zu allen Momentaufnahme-Agents auf dem Verteiler enthält.
So überwachen Sie die Veröffentlichungseigenschaften für einen bestimmten Verleger auf dem Verteiler
Erstellen Sie eine Verbindung mit dem Verteiler, indem Sie die ServerConnection -Klasse verwenden.
Rufen Sie auf eine der folgenden Arten ein PublisherMonitor -Objekt ab.
Erstellen Sie eine Instanz der PublisherMonitor-Klasse. Legen Sie die Name -Eigenschaft für den Verleger fest, und legen Sie die ConnectionContext -Eigenschaft auf die in Schritt 1 erstellte ServerConnection fest. Rufen Sie die LoadProperties -Methode auf, um die Eigenschaften des Objekts abzurufen. Wenn diese Methode falsezurückgibt, ist der Verlegername falsch definiert, oder die Veröffentlichung ist nicht vorhanden.
Aus der PublisherMonitorCollection , auf die mittels der PublisherMonitors -Eigenschaft eines vorhandenen ReplicationMonitor -Objekts zugegriffen wird.
Führen Sie mindestens eine der folgenden Methoden aus, um Replikationsinformationen für alle Veröffentlichungen zurückzugeben, die zu diesem Verleger gehören.
EnumDistributionAgentSessionDetails - gibt ein DataSet -Objekt zurück, das Details zu dem angegebenen Verteilungs-Agent und der angegebenen Sitzung enthält.
EnumDistributionAgentSessions - gibt ein DataSet -Objekt zurück, das Sitzungsinformationen zu dem angegebenen Verteilungs-Agent enthält.
EnumErrorRecords - gibt ein DataSet -Objekt zurück, das Fehlereintragsinformationen zu dem angegebenen Fehler enthält.
EnumLogReaderAgentSessionDetails - gibt ein DataSet -Objekt zurück, das Details für den angegebenen Protokolllese-Agent und die angegebene Sitzung enthält.
EnumLogReaderAgentSessions - gibt ein DataSet -Objekt zurück, das Sitzungsinformationen für den angegebenen Protokolllese-Agent enthält.
EnumMergeAgentSessionDetails - gibt ein DataSet -Objekt zurück, das Details zu dem angegebenen Merge-Agent und der angegebenen Sitzung enthält.
EnumMergeAgentSessionDetails2 - gibt ein DataSet -Objekt zurück, das zusätzliche Details zu dem angegebenen Merge-Agent und der angegebenen Sitzung enthält.
EnumMergeAgentSessions - gibt ein DataSet -Objekt zurück, das Sitzungsinformationen für den angegebenen Merge-Agent enthält.
EnumMergeAgentSessions2 - gibt ein DataSet -Objekt zurück, das zusätzliche Sitzungsinformationen für den angegebenen Merge-Agent enthält.
EnumPublications - gibt ein DataSet -Objekt zurück, das Informationen zu allen Veröffentlichungen auf diesem Verteiler enthält.
EnumPublications2 - gibt ein DataSet -Objekt zurück, das Informationen zu allen Veröffentlichungen auf diesem Verteiler enthält.
EnumSnapshotAgentSessionDetails - gibt ein DataSet -Objekt zurück, das Details zu dem angegebenen Momentaufnahme-Agent und der angegebenen Sitzung enthält.
EnumSnapshotAgentSessions - gibt ein DataSet -Objekt zurück, das Sitzungsinformationen für den angegebenen Momentaufnahme-Agent enthält.
EnumSubscriptions - gibt ein DataSet -Objekt zurück, das Informationen zu allen Abonnements für Veröffentlichungen auf diesem Verteiler enthält.
So überwachen Sie die Eigenschaften für eine bestimmte Veröffentlichung auf dem Verteiler
Erstellen Sie eine Verbindung mit dem Verteiler, indem Sie die ServerConnection -Klasse verwenden.
Rufen Sie auf eine der folgenden Arten ein PublicationMonitor -Objekt ab.
Erstellen Sie eine Instanz der PublicationMonitor-Klasse. Legen Sie die Eigenschaften DistributionDBName, PublisherName, PublicationDBNameund Name für die Veröffentlichung fest, und legen Sie die ConnectionContext -Eigenschaft auf die in Schritt 1 erstellte ServerConnection fest. Rufen Sie die LoadProperties -Methode auf, um die Eigenschaften des Objekts abzurufen. Wenn diese Methode falsezurückgibt, sind die Veröffentlichungseigenschaften falsch definiert, oder die Veröffentlichung ist nicht vorhanden.
Aus der PublicationMonitorCollection , auf die mittels der PublicationMonitors -Eigenschaft eines vorhandenen PublisherMonitor -Objekts zugegriffen wird.
Führen Sie mindestens eine der folgenden Methoden aus, um Informationen zu dieser Veröffentlichung zurückzugeben.
EnumErrorRecords - gibt ein DataSet -Objekt zurück, das Fehlereinträge zu dem angegebenen Fehler enthält.
EnumLogReaderAgent - gibt ein DataSet -Objekt zurück, das Informationen zu dem Protokolllese-Agents für diese Veröffentlichung enthält.
EnumMonitorThresholds - gibt ein DataSet -Objekt zurück, das Informationen zu den für diese Veröffentlichung festgelegten Warnungsschwellenwerten für die Überwachung enthält.
EnumQueueReaderAgent - gibt ein DataSet -Objekt zurück, das Informationen zu dem von dieser Veröffentlichung verwendeten Warteschlangenlese-Agent enthält.
EnumSnapshotAgent - gibt ein DataSet -Objekt zurück, das Informationen zu dem Momentaufnahme-Agent für diese Veröffentlichung enthält.
EnumSubscriptions - gibt ein DataSet -Objekt zurück, das Informationen zu Abonnements für diese Veröffentlichung enthält.
EnumSubscriptions2 - gibt ein DataSet -Objekt zurück, das basierend auf der angegebenen SubscriptionResultOptionzusätzliche Informationen zu Abonnements für diese Veröffentlichung enthält.
EnumTracerTokenHistory - gibt ein DataSet -Objekt zurück, das Latenzzeitinformationen für das angegebene Überwachungstoken enthält.
EnumTracerTokens - gibt ein DataSet -Objekt zurück, das Informationen zu allen in diese Veröffentlichung eingefügten Überwachungstoken enthält.
So überwachen Sie Transaktionsbefehle, die darauf warten, auf dem Abonnenten angewendet zu werden
Erstellen Sie eine Verbindung mit dem Verteiler, indem Sie die ServerConnection -Klasse verwenden.
Rufen Sie auf eine der folgenden Arten ein PublicationMonitor -Objekt ab.
Erstellen Sie eine Instanz der PublicationMonitor-Klasse. Legen Sie die Eigenschaften DistributionDBName, PublisherName, PublicationDBNameund Name für die Veröffentlichung fest, und legen Sie die ConnectionContext -Eigenschaft auf die in Schritt 1 erstellte ServerConnection fest. Rufen Sie die LoadProperties -Methode auf, um die Eigenschaften des Objekts abzurufen. Wenn diese Methode falsezurückgibt, sind die Veröffentlichungseigenschaften falsch definiert, oder die Veröffentlichung ist nicht vorhanden.
Aus der PublicationMonitorCollection , auf die mittels der PublicationMonitors -Eigenschaft eines vorhandenen PublisherMonitor -Objekts zugegriffen wird.
Führen Sie die TransPendingCommandInfo -Methode aus, die ein PendingCommandInfo -Objekt zurückgibt.
Verwenden Sie die Eigenschaften dieses PendingCommandInfo -Objekts, um die geschätzte Anzahl von ausstehenden Befehlen und die Dauer für das Abschließen der Übermittlung dieser Befehle zu bestimmen.
So legen Sie die Warnungsschwellenwerte für die Überwachung für eine Veröffentlichung fest
Erstellen Sie eine Verbindung mit dem Verteiler, indem Sie die ServerConnection -Klasse verwenden.
Rufen Sie auf eine der folgenden Arten ein PublicationMonitor -Objekt ab.
Erstellen Sie eine Instanz der PublicationMonitor-Klasse. Legen Sie die Eigenschaften DistributionDBName, PublisherName, PublicationDBNameund Name für die Veröffentlichung fest, und legen Sie die ConnectionContext -Eigenschaft auf die in Schritt 1 erstellte ServerConnection fest. Rufen Sie die LoadProperties -Methode auf, um die Eigenschaften des Objekts abzurufen. Wenn diese Methode falsezurückgibt, sind die Veröffentlichungseigenschaften falsch definiert, oder die Veröffentlichung ist nicht vorhanden.
Aus der PublicationMonitorCollection , auf die mittels der PublicationMonitors -Eigenschaft eines vorhandenen PublisherMonitor -Objekts zugegriffen wird.
Führen Sie die EnumMonitorThresholds -Methode aus. Beachten Sie die aktuellen Schwellenwerteinstellungen in der zurückgegebenen ArrayList von MonitorThreshold -Objekten.
Führen Sie die ChangeMonitorThreshold -Methode aus. Übergeben Sie die folgenden Parameter:
metricID - ein Int32 -Wert, der die Schwellenwertmetrik für die Überwachung aus der folgenden Tabelle darstellt:
Wert Beschreibung des Dataflows 1 expiration - überwacht den bevorstehenden Ablauf von Abonnements für Transaktionsveröffentlichungen. 2 latency - überwacht die Leistung von Abonnements für Transaktionsveröffentlichungen. 4 mergeexpiration - überwacht den bevorstehenden Ablauf von Abonnements für Mergeveröffentlichungen. 5 mergeslowrunduration - überwacht die Dauer von Mergesynchronisierungen über Verbindungen mit niedriger Bandbreite (DFÜ-Verbindungen). 6 mergefastrunduration - überwacht die Dauer von Mergesynchronisierungen über Verbindungen mit niedriger Bandbreite (DFÜ-Verbindungen). 7 mergefastrunspeed - Überwachung der Synchronisierungsgeschwindigkeit von Mergesynchronisierungen über Verbindungen mit hoher Bandbreite (LAN-Verbindungen). 8 mergeslowrunspeed - überwacht die Synchronisierungsgeschwindigkeit von Mergesynchronisierungen über Verbindungen mit niedriger Bandbreite (DFÜ-Verbindungen). enable - Boolean -Wert, der angibt, ob die Metrik für die Veröffentlichung aktiviert ist.
thresholdValue - ganzzahliger Wert, der den Schwellenwert festlegt.
shouldAlert - ganze Zahl, die angibt, ob dieser Schwellenwert eine Warnung generieren soll.