Freigeben über


Programmgesteuerte Überwachung der Replikation

Der Replikationsmonitor ist ein grafisches Tool, mit dem Sie eine Replikationstopologie überwachen können. Sie können programmgesteuert auf dieselben Überwachungsdaten zugreifen, indem Sie Transact-SQL gespeicherten Replikationsprozeduren oder Replikationsverwaltungsobjekte (Replication Management Objects, RMO) verwenden. Mit diesen Objekten können Sie die folgenden Aufgaben programmieren:

  • Überwachen Sie den Status von Herausgebern, Publikationen und Abonnements.

  • Überwachen von Zusammenführungs-Agent-Sitzungen auf einem oder mehreren Abonnenten.

  • Überwachen Sie Transaktionsbefehle, die auf eine oder mehrere Abonnenten angewendet werden.

  • Definieren Sie die Schwellenwertmetriken, die bestimmen, wann eine Publikation eingreifen muss.

  • Überwachen Sie den Status von Ablaufverfolgungstoken.

In diesem Thema:

Transact-SQL

Replikationsverwaltungsobjekte (RMO)

Transact-SQL

Überwachen Sie Herausgeber, Publikationen und Abonnements vom Distributor

  1. Führen Sie sp_replmonitorhelppublisher beim Distributor in der Verteilungsdatenbank aus. Dadurch werden Überwachungsinformationen für alle Herausgeber zurückgegeben, die diesen Distributor verwenden. Wenn Sie das Resultset auf einen einzelnen Publisher beschränken möchten, geben Sie @publisher an.

  2. In der Verteilungsdatenbank beim Distributor führen Sie sp_replmonitorhelppublication aus. Dadurch werden Überwachungsinformationen für alle Publikationen zurückgegeben, die diesen Distributor verwenden. Wenn Sie das Resultset auf einen einzelnen Publisher, eine Publikation oder eine veröffentlichte Datenbank beschränken möchten, geben Sie @publisher, @publication oder @publisher_db an.

  3. Führen Sie beim Distributor in der Verteilungsdatenbank sp_replmonitorhelpsubscription aus. Dadurch werden Überwachungsinformationen für alle Abonnements zurückgegeben, die diesen Distributor verwenden. Wenn Sie das Resultset auf Abonnements beschränken möchten, die zu einem einzelnen Verlag, einer Publikation oder einer veröffentlichten Datenbank gehören, geben Sie @publisher, @publication oder @publisher_db an.

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

  1. Führen Sie in der Verteilungsdatenbank beim Distributor sp_replmonitorsubscriptionpendingcmds aus. Dadurch werden Überwachungsinformationen zu allen ausstehenden Befehlen für alle Abonnements unter Verwendung dieses Distributors zurückgegeben. Wenn Sie das Resultset auf Befehle beschränken möchten, die für Abonnements ausstehen, die zu einer einzelnen Publisher-, Abonnenten-, Publikations- oder veröffentlichten Datenbank gehören, geben Sie @publisher, @subscriber, @publication oder @publisher_db an.

Überwachen Sie zusammenzuführende Änderungen, die auf das Hochladen oder Herunterladen warten

  1. Führen Sie im Publisher in der Publikationsdatenbank sp_showpendingchanges aus. Dadurch wird ein Resultset zurückgegeben, das Informationen zu Änderungen anzeigt, die darauf warten, an Abonnenten repliziert zu werden. Wenn Sie das Resultset auf Änderungen beschränken möchten, die zu einer einzelnen Publikation oder einem einzelnen Artikel gehören, geben Sie @publication bzw. @article an.

  2. Führen Sie bei einem Abonnenten in der Abonnementdatenbank den Befehl sp_showpendingchanges aus. Dadurch wird ein Resultset zurückgegeben, das Informationen zu Änderungen anzeigt, die darauf warten, in Publisher repliziert zu werden. Um die Ergebnismenge auf Änderungen zu beschränken, die zu einer bestimmten Publikation oder einem bestimmten Artikel gehören, geben Sie @publication bzw. @article an.

So überwachen Sie die Sitzungen des Zusammenführungsagents

  1. Führen Sie das Kommando sp_replmonitorhelpmergesession auf dem Distributor in der Verteilungsdatenbank aus. Dadurch werden Überwachungsinformationen, einschließlich Session_id, für alle Zusammenführungs-Agent-Sitzungen für alle Abonnements zurückgegeben, die diesen Distributor verwenden. Sie können auch Session_id abrufen, indem Sie die MSmerge_sessions Systemtabelle abfragen.

  2. Führen Sie auf dem Verteiler in der Verteilungsdatenbank sp_replmonitorhelpmergesessiondetail aus. Geben Sie einen Session_id Wert aus Schritt 1 für @session_id an. Dadurch werden detaillierte Überwachungsinformationen zur Sitzung angezeigt.

  3. Wiederholen Sie Schritt 2 für jede interessante Sitzung.

So überwachen Sie Zusammenführungs-Agent-Sitzungen für Pullabonnements vom Abonnenten

  1. Führen Sie beim Abonnenten in der Abonnementdatenbank sp_replmonitorhelpmergesession aus. Geben Sie für ein bestimmtes Abonnement @publisher, @publication und den Namen der Publikationsdatenbank für @publisher_db an. Dadurch werden Überwachungsinformationen für die letzten fünf Sitzungen des Merge-Agenten für dieses Abonnement zurückgegeben. Notieren Sie sich den Wert Session_id für interessante Sitzungen im Resultset.

  2. Führen Sie beim Abonnenten in der Abonnementdatenbank sp_replmonitorhelpmergesessiondetail aus. Geben Sie einen Session_id Wert aus Schritt 1 für @session_id an. Dadurch werden detaillierte Überwachungsinformationen zur Sitzung angezeigt.

  3. Wiederholen Sie Schritt 2 für jede interessante Sitzung.

So zeigen Sie die Monitorschwellenmetriken für eine Publikation an und ändern sie

  1. Führen Sie beim Distributor auf der Verteilungsdatenbank sp_replmonitorhelppublicationthresholds aus. Dadurch werden die Überwachungsschwellenwerte für alle Publikationen zurückgegeben, die diesen Distributor verwenden. Um das Ergebnis auf Schwellenwerte für Publikationen zu beschränken, die zu einem einzelnen Publisher, einer publizierten Datenbank oder einer einzelnen Publikation gehören, spezifizieren Sie @publisher, @publisher_db oder @publication. Beachten Sie den Wert von Metric_id für alle Schwellenwerte, die geändert werden müssen. Weitere Informationen finden Sie unter Festlegen von Schwellenwerten und Warnungen im Replikationsmonitor.

  2. Führen Sie beim Distributor in der Verteilungsdatenbank sp_replmonitorchangepublicationthreshold aus. Geben Sie folgendes nach Bedarf an:

    • Der in Schritt 1 für @metric_id abgerufene Metric_id Wert.

    • Ein neuer Wert für die Monitorschwellenmetrik für @value.

    • Ein Wert von 1 für @shouldalert für eine Warnung, die protokolliert wird, wenn dieser Schwellenwert erreicht wird, oder einen Wert von 0 , wenn keine Warnung erforderlich ist.

    • Ein Wert von 1 für @mode, um die Monitorschwellenwertmetrik zu aktivieren, oder ein Wert von 2, um sie zu deaktivieren.

Replikationsverwaltungsobjekte (RMO)

So überwachen Sie ein Abonnement für eine Zusammenführungsveröffentlichung beim Abonnenten

  1. Erstellen Sie mithilfe der ServerConnection Klasse eine Verbindung mit dem Abonnenten.

  2. Erstellen Sie eine Instanz der MergeSubscriberMonitor Klasse, und legen Sie die PublisherEigenschaften PublisherDBPublicationSubscriberDB , Eigenschaften für das Abonnement, und legen Sie die ConnectionContext Eigenschaft auf die ServerConnection in Schritt 1 erstellte.

  3. Rufen Sie eine der folgenden Methoden auf, um für dieses Abonnement Informationen zu Merge Agent-Sitzungen zurückzugeben:

    • GetSessionsSummary - gibt ein Array von MergeSessionSummary Objekten mit Informationen zu bis zu den letzten fünf Merge-Agent-Sitzungen zurück. Notieren Sie sich den SessionId Wert für beliebige interessante Sitzungen.

    • GetSessionsSummary - Gibt ein Array von MergeSessionSummary Objekten zurück, das Informationen zu Zusammenführungs-Agent-Sitzungen enthält, die während der letzten Anzahl von Stunden aufgetreten sind, die als Parameter "Stunden " (bis zu den letzten fünf Sitzungen) übergeben wurden. Notieren Sie sich den SessionId Wert für jede interessierende Sitzung.

    • GetLastSessionSummary - liefert ein MergeSessionSummary Objekt mit Informationen zur letzten Sitzung des Merge Agent. Notieren Sie sich den SessionId Wert für diese Sitzung.

    • GetSessionsSummaryDataSet - gibt ein DataSet Objekt mit Informationen über die letzten bis zu fünf Sitzungen des Zusammenführungs-Agenten zurück, eine in jeder Zeile. Notieren Sie sich den Wert der Spalte Session_id für alle interessanten Sitzungen.

    • GetLastSessionSummaryDataRow - gibt ein DataRow Objekt mit Informationen zur letzten Zusammenführungs-Agent-Sitzung zurück. Notieren Sie sich den Wert der Spalte Session_id für diese Sitzung.

  4. (Optional) Rufen Sie auf, um die Daten für das objekt zu aktualisieren, das MergeSessionSummary als mss übergeben wird, oder rufen RefreshSessionSummary Sie RefreshSessionSummary auf, um die Daten im objekt zu aktualisieren, das DataRow als drRefresh übergeben wird.

  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:

Überwachen von Replikationseigenschaften für alle Publikationen bei einem Distributor

  1. Erstellen Sie mithilfe der ServerConnection Klasse eine Verbindung mit dem Distributor.

  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 eine oder mehrere der folgenden Methoden aus, um Replikationsinformationen für alle Herausgeber zurückzugeben, die diesen Distributor verwenden.

Um die Publikationseigenschaften eines bestimmten Publishers beim Distributor zu überwachen

  1. Erstellen Sie mithilfe der ServerConnection Klasse eine Verbindung mit dem Distributor.

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

  3. Führen Sie eine oder mehrere der folgenden Methoden aus, um Replikationsinformationen für alle Publikationen zurückzugeben, die zu diesem Publisher gehören.

Um Eigenschaften für eine bestimmte Publikation beim Distributor zu überwachen

  1. Erstellen Sie mithilfe der ServerConnection Klasse eine Verbindung mit dem Distributor.

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

  3. Führen Sie eine oder mehrere der folgenden Methoden aus, um Informationen zu dieser Publikation zurückzugeben.

    • EnumErrorRecords - gibt ein DataSet Objekt zurück, das Fehlerdatensätze zu dem angegebenen Fehler enthält.

    • EnumLogReaderAgent - gibt ein DataSet Objekt zurück, das Informationen zum Protokollleser-Agent für diese Publikation enthält.

    • EnumMonitorThresholds - gibt ein DataSet Objekt zurück, das Informationen zu den für diese Publikation festgelegten Warnungsschwellenwerten für den Monitor enthält.

    • EnumQueueReaderAgent - gibt ein DataSet Objekt zurück, das Informationen zum von dieser Publikation verwendeten Queue Reader-Agent enthält.

    • EnumSnapshotAgent - gibt ein DataSet Objekt zurück, das Informationen zum Snapshot-Agent für diese Publikation enthält.

    • EnumSubscriptions - gibt ein DataSet Objekt zurück, das Informationen zu Abonnements für diese Publikation enthält.

    • EnumSubscriptions2 - gibt ein DataSet Objekt zurück, das zusätzliche Informationen zu Abonnements für diese Publikation enthält, basierend auf der bereitgestellten SubscriptionResultOption.

    • EnumTracerTokenHistory - gibt ein DataSet Objekt zurück, das Latenzinformationen für das angegebene Ablaufverfolgungstoken enthält.

    • EnumTracerTokens - gibt ein DataSet Objekt zurück, das Informationen zu allen in diese Publikation eingefügten Ablaufverfolgungstoken enthält.

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

  1. Erstellen Sie mithilfe der ServerConnection Klasse eine Verbindung mit dem Distributor.

  2. Erhalten 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 ausstehender Befehle und die Dauer zu bestimmen, die zum Abschließen der Übermittlung dieser Befehle dauert.

So legen Sie die Warnungsschwellenwerte für die Überwachung für eine Publikation fest

  1. Erstellen Sie mithilfe der ServerConnection Klasse eine Verbindung mit dem Distributor.

  2. Erhalten Sie ein PublicationMonitor Objekt auf eine der folgenden Arten.

  3. Führen Sie die EnumMonitorThresholds Methode aus. Beachten Sie die aktuellen Schwellenwerteinstellungen in den zurückgegebenen ArrayListMonitorThreshold Objekten.

  4. Führen Sie die ChangeMonitorThreshold Methode aus. Übergeben Sie die folgenden Parameter:

    • metricID – ein Int32 Wert, der die Metrik für den Überwachungsschwellenwert aus der folgenden Tabelle darstellt:

      Wert BESCHREIBUNG
      1 expiration – überwacht das baldige Auslaufen von Abonnements für Transaktionsveröffentlichungen.
      2 latency – überwacht die Leistung von Abonnements für Transaktionspublikationen.
      4 mergeexpiration – überwacht das bevorstehende Auslaufen der Abonnements zur Zusammenführung von Publikationen.
      5 mergeslowrunduration – überwacht die Dauer der Zusammenführungssynchronisierungen über Verbindungen mit geringer Bandbreite (Dialup).
      6 mergefastrunduration – überwacht die Dauer der Zusammenführungssynchronisierungen über LAN-Verbindungen (High-Bandwidth).
      7 mergefastrunspeed – überwacht die Synchronisierungsrate der zusammenführenden Synchronisierungen über hochbandbreitige LAN-Verbindungen.
      8 mergeslowrunspeed – überwacht die Synchronisierungsrate der Zusammenführungssynchronisierungen über Verbindungen mit geringer Bandbreite (Dialup).
    • aktivieren - Boolean Wert, der angibt, ob die Metrik für die Publikation aktiviert ist.

    • thresholdValue - ganzzahliger Wert, der den Schwellenwert festlegt.

    • shouldAlert – ganze Zahl, die angibt, ob dieser Schwellenwert eine Warnung generieren soll.