Vorgehensweise: Programmgesteuertes Überwachen der Replikation (RMO-Programmierung)
Der Replikationsmonitor ist ein grafisches Tool, mit dem Sie die Replikationstopologie überwachen können. Mithilfe von Replikationsverwaltungsobjekten (RMO) können Sie programmgesteuert auf diese Überwachungsdaten zugreifen. RMO-Klassen ermöglichen das Programmieren der folgenden Tasks:
Überwachen der Ergebnisse der letzten fünf Ausführungen des Merge-Agents auf dem Abonnenten.
Überwachen des Status von Verlegern, Veröffentlichungen und Abonnements.
Ü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. Weitere Informationen finden Sie unter Vorgehensweise: Messen der Latenzzeit und Überprüfen der Verbindungen für die Transaktionsreplikation (RMO-Programmierung).
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, PublisherDB und 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 Wert SessionID()()()() für alle Sitzungen, die von Interesse sind.
GetSessionsSummary(Int32) - 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(MergeSessionSummary%) auf, um die Daten für das MergeSessionSummary-Objekt zu aktualisieren, das als mss, übergeben wurde, oder rufen Sie RefreshSessionSummary(DataRow%) auf, um die Daten im DataRow-Objekt zu aktualisieren, das als drRefresh übergeben wurde.
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 sessionID zurück.
GetSessionDetailsDataSet - gibt ein DataSet-Objekt mit Informationen für die angegebene sessionID zurück.
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 Snapshot-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 false zurü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 Snapshot-Agent und der angegebenen Sitzung enthält.
EnumSnapshotAgentSessions - gibt ein DataSet-Objekt zurück, das Sitzungsinformationen für den angegebenen Snapshot-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, PublicationDBName und 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 false zurü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 Snapshot-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 SubscriptionResultOption zusä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, PublicationDBName und 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 false zurü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, PublicationDBName und 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 false zurü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
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 - überwacht die Synchronisierungsgeschwindigkeit von Mergesynchronisierungen über Verbindungen mit hoher Bandbreite (LAN).
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.