Programmgesteuertes Überwachen der Replikation

Gilt für:SQL ServerAzure SQL Managed Instance

Der Replikationsmonitor ist ein grafisches Tool, mit dem Sie eine Replikationstopologie überwachen können. Sie können programmgesteuert auf dieselben Überwachungsdaten zugreifen, indem Sie gespeicherte Prozeduren der Transact-SQL-Replikation oder Replikationsverwaltungsobjekte (Replication Management Objects, RMO) verwenden. 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:

Transact-SQL

Replikationsverwaltungsobjekte (RMO)

Transact-SQL

So überwachen Sie Verleger, Veröffentlichungen und Abonnements auf dem Verteiler

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

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

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

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

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

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

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

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

  3. Wiederholen Sie Schritt 2 für jede Sitzung, die von Interesse ist.

So überwachen Sie Merge-Agentsitzungen für Pullabonnements auf dem Abonnenten

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

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

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

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

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

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

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

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

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

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

So überwachen Sie die Replikationseigenschaften für alle Veröffentlichungen auf einem Verteiler

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

  2. Erstellen Sie eine Instanz der ReplicationMonitor-Klasse.

  3. Legen Sie die ConnectionContext -Eigenschaft auf die in Schritt 1 erstellte ServerConnection fest.

  4. Rufen Sie die LoadProperties -Methode auf, um die Eigenschaften des Objekts abzurufen.

  5. Führen Sie mindestens eine der folgenden Methoden aus, um Replikationsinformationen für alle Verleger zurückzugeben, die diesen Verteiler verwenden:

So überwachen Sie die Veröffentlichungseigenschaften für einen bestimmten Verleger auf dem Verteiler

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

  2. Rufen Sie auf eine der folgenden Arten ein PublisherMonitor -Objekt ab.

  3. Führen Sie mindestens eine der folgenden Methoden aus, um Replikationsinformationen für alle Veröffentlichungen zurückzugeben, die zu diesem Verleger gehören.

So überwachen Sie die Eigenschaften für eine bestimmte Veröffentlichung auf dem Verteiler

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

  2. Rufen Sie auf eine der folgenden Arten ein PublicationMonitor -Objekt ab.

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

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

  2. Rufen Sie auf eine der folgenden Arten ein PublicationMonitor -Objekt ab.

  3. Führen Sie die TransPendingCommandInfo -Methode aus, die ein PendingCommandInfo -Objekt zurückgibt.

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

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

  2. Rufen Sie auf eine der folgenden Arten ein PublicationMonitor -Objekt ab.

  3. Führen Sie die EnumMonitorThresholds -Methode aus. Beachten Sie die aktuellen Schwellenwerteinstellungen in der zurückgegebenen ArrayList von MonitorThreshold -Objekten.

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