Replikation programmgesteuert überwachen

Gilt für:SQL ServerAzure 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.

  • Sitzungen des Merge-Agents auf einem oder mehreren Abonnenten überwachen.

  • Ü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 Sie den Status von Tracer-Token.

Transact-SQL

Überwachen von Publishern, Publikationen und Abonnements im Distributor

  1. Führen Sie in der Verteilungsdatenbank auf dem Verteiler sp_replmonitorhelppublisher aus. 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 beim Verteiler in der Verteilungsdatenbank sp_replmonitorhelppublication aus. 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 in der Verteilungsdatenbank sp_replmonitorhelpsubscription aus. 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.

Überwachen von Transaktionsbefehlen, die darauf warten, beim Abonnenten angewendet zu werden

  1. Führen Sie in der Verteilerdatenbank auf dem Verteiler sp_replmonitorsubscriptionpendingcmds aus. Dies gibt Überwachungsinformationen für alle ausstehenden Befehle aller Abonnements zurück, die diesen Distributor verwenden. Um die Ergebnismenge auf ausstehende Befehle für Abonnements zu beschränken, die zu genau einem Publisher, Subscriber, einer Publikation oder einer Publisherdatenbank gehören, geben Sie entsprechend @publisher, @subscriber, @publication bzw. @publisher_db an.

Zum Überwachen von Änderungen bei Zusammenführungen, die hoch- oder heruntergeladen werden sollen

  1. Führen Sie auf dem Publisher in der Veröffentlichungsdatenbank sp_showpendingchanges aus. Dies gibt eine Ergebnismenge zurück, die Informationen zu Änderungen enthält, die noch auf die Replikation an Abonnenten warten. Um die Ergebnismenge auf Änderungen zu beschränken, die zu genau einer Veröffentlichung bzw. einem Artikel gehören, geben Sie @publication bzw. @article an.

  2. Führen Sie beim Abonnenten in der Abonnementdatenbank sp_showpendingchanges aus. Dies gibt eine Ergebnismenge zurück, die Informationen zu Änderungen enthält, die darauf warten, an den Publisher repliziert zu werden. Um die Ergebnismenge auf Änderungen zu beschränken, die zu einer einzelnen Veröffentlichung oder einem einzelnen Artikel gehören, geben Sie jeweils @publication oder @article an.

Sitzungen des Merge-Agents überwachen

  1. Führen Sie auf dem Verteiler in der Verteilungsdatenbank sp_replmonitorhelpmergesession aus. Hiermit werden Überwachungsinformationen, einschließlich Session_id, zu allen Merge-Agent-Sitzungen für alle Abonnements zurückgegeben, die diesen Verteiler verwenden. Sie können Session_id auch ermitteln, indem Sie eine Abfrage der MSmerge_sessions -Systemtabelle ausführen.

  2. Führen Sie auf dem Verteiler in der Verteilungsdatenbank sp_replmonitorhelpmergesessiondetail aus. 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 Sitzungen des Merge-Agents für Pullabonnements des Abonnenten

  1. Führen Sie beim Abonnenten in der Abonnementdatenbank sp_replmonitorhelpmergesession aus. Geben Sie für ein bestimmtes Abonnement @publisher, @publicationund den Namen der Veröffentlichungsdatenbank für @publisher_dban. Hiermit werden Überwachungsinformationen für die letzten fünf Sitzungen des Merge-Agents 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 beim Abonnenten in der Abonnementdatenbank sp_replmonitorhelpmergesessiondetail aus. 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.

Anzeigen und Ändern der Überwachungsschwellenwerte für eine Veröffentlichung

  1. Führen Sie beim Verteiler in der Verteilungsdatenbank sp_replmonitorhelppublicationthresholds aus. Dadurch werden Überwachungsschwellenwerte zurückgegeben, die für alle Veröffentlichungen festgelegt wurden, die diesen Verteiler verwenden. Um das Resultset auf Monitorschwellenwerte für Publikationen zu beschränken, die zu genau einem Publisher, einer Publikationsdatenbank oder genau einer Publikation gehören, geben Sie jeweils @publisher, @publisher_db bzw. @publication an. Beachten Sie den Wert Metric_id für alle Schwellenwerte, die geändert werden müssen. Weitere Informationen finden Sie unter Schwellenwerte und Warnungen im Replikationsmonitor festlegen.

  2. Führen Sie auf dem Verteiler in der Verteilerdatenbank sp_replmonitorchangepublicationthreshold aus. Geben Sie bei Bedarf Folgendes an:

    • Den in Schritt 1 ermittelten Metric_id -Wert für @metric_id.

    • Einen neuen Wert für die Metrik für den Überwachungsschwellenwert 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)

Ein Abonnement einer Mergeveröffentlichung beim Abonnenten überwachen

  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 den Sitzungen des Merge-Agents für dieses Abonnement abzurufen:

    • GetSessionsSummary - gibt ein Array von MergeSessionSummary-Objekten mit Informationen zu bis zu den letzten fünf Sitzungen des Merge-Agents 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-Agent-Sitzungen zurück, die in der Anzahl der vergangenen Stunden aufgetreten sind, die als Parameter hours übergeben wurde (bis zu den letzten fünf Sitzungen). Beachten Sie den SessionId -Wert für alle Sitzungen, die von Interesse sind.

    • GetLastSessionSummary - gibt ein MergeSessionSummary-Objekt mit Informationen zur letzten Sitzung des Merge-Agents 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 zur letzten Sitzung des Merge-Agents 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 drRefresh übergeben wurde.

  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:

Replikationseigenschaften für alle Publikationen bei einem Verteiler überwachen

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

  2. Erstellen Sie eine Instanz der ReplicationMonitor-Klasse.

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

  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:

Publikationseigenschaften für einen bestimmten Herausgeber beim Distributor überwachen

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

  2. Rufen Sie ein PublisherMonitor-Objekt auf eine der folgenden Arten 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.

Eigenschaften für eine bestimmte Publikation beim Distributor überwachen

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

  2. Rufen Sie ein PublicationMonitor-Objekt auf eine der folgenden Arten 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 über den Log Reader-Agent für diese Veröffentlichung enthält.

    • EnumMonitorThresholds – gibt ein DataSet-Objekt zurück, das Informationen über die für diese Veröffentlichung festgelegten Warnschwellenwerte für den Monitor 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 über alle in diese Veröffentlichung eingefügten Tracer-Token enthält.

So überwachen Sie Transaktionsbefehle, die darauf warten, beim Abonnenten angewendet zu werden

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

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

  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 Warnschwellen für die Überwachung einer Veröffentlichung fest

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

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

  3. Führen Sie die EnumMonitorThresholds -Methode aus. Beachten Sie die aktuellen Einstellungen für die Schwellenwerte in dem 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
      1 expiration - überwacht den bevorstehenden Ablauf von Abonnements für Transaktionspublikationen.
      2 latency - überwacht die Leistung von Abonnements für transaktionale Verö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 Merge-Synchronisierungen bei Verbindungen mit hoher Bandbreite (LAN-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 geringer 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.