Programmgesteuertes Überwachen der ReplikationProgrammatically Monitor Replication

Gilt für: JaSQL Server JaAzure SQL-Datenbank (nur verwaltete Instanz) NeinAzure Synapse Analytics (SQL DW) NeinParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database (Managed Instance only) noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Der Replikationsmonitor ist ein grafisches Tool, mit dem Sie eine Replikationstopologie überwachen können.Replication Monitor is a graphical tool that allows you to monitor a replication topology. Mithilfe von gespeicherten Transact-SQLTransact-SQL -Replikationsprozeduren oder Replikationsverwaltungsobjekten (RMO) können Sie programmgesteuert auf diese Überwachungsdaten zugreifen.You can access the same monitoring data programmatically by using Transact-SQLTransact-SQL replication stored procedures or replication management objects (RMO). Diese Objekte ermöglichen das Programmieren der folgenden Tasks:These objects enable you to program the following tasks:

  • Überwachen des Status von Verlegern, Veröffentlichungen und Abonnements.Monitor the state of Publishers, publications, and subscriptions.

  • Überwachen von Merge-Agentsitzungen auf mindestens einem Abonnenten.Monitor Merge Agent sessions at one or more Subscribers.

  • Überwachen von Transaktionsbefehlen, die darauf warten, auf mindestens einem Abonnenten angewendet zu werden.Monitor transactional commands waiting to be applied at one or more Subscribers.

  • Definieren von Schwellenwertmetriken, um bestimmen zu können, wann eine Veröffentlichung einen Eingriff erfordert.Define the threshold metrics that determine when a publication requires intervention.

  • Überwachen des Status von Überwachungstoken.Monitor the status of tracer tokens.

In diesem Thema:In this topic:

Transact-SQLTransact-SQL

Replikationsverwaltungsobjekte (RMO)Replication Management Objects (RMO)

Transact-SQLTransact-SQL

So überwachen Sie Verleger, Veröffentlichungen und Abonnements auf dem VerteilerTo monitor Publishers, publications, and subscriptions from the Distributor

  1. Führen Sie auf dem Verteiler für die Verteilerdatenbank sp_replmonitorhelppublisheraus.At the Distributor on the distribution database, execute sp_replmonitorhelppublisher. Dadurch werden Überwachungsinformationen zu allen Verlegern zurückgegeben, die diesen Verteiler verwenden.This returns monitoring information for all Publishers using this Distributor. Um das Resultset auf nur einen Verleger zu beschränken, geben Sie @publisher an.To limit the result set to a single Publisher, specify @publisher.

  2. Führen Sie auf dem Verteiler für die Verteilerdatenbank sp_replmonitorhelppublicationaus.At the Distributor on the distribution database, execute sp_replmonitorhelppublication. Dadurch werden Überwachungsinformationen zu allen Veröffentlichungen zurückgegeben, die diesen Verteiler verwenden.This returns monitoring information for all publications using this Distributor. Um das Resultset auf nur einen Verleger, eine Veröffentlichung oder eine veröffentlichte Datenbank zu beschränken, geben Sie @publisher, @publication bzw. @publisher_db an.To limit the result set to a single Publisher, publication, or published database, specify @publisher, @publication, or @publisher_db, respectively.

  3. Führen Sie auf dem Verteiler für die Verteilerdatenbank sp_replmonitorhelpsubscriptionaus.At the Distributor on the distribution database, execute sp_replmonitorhelpsubscription. Dadurch werden Überwachungsinformationen zu allen Abonnements zurückgegeben, die diesen Verteiler verwenden.This returns monitoring information for all subscriptions using this Distributor. Um das Resultset auf Abonnements zu beschränken, die nur einem Verleger, einer Veröffentlichung oder einer veröffentlichten Datenbank angehören, geben Sie @publisher, @publication bzw. @publisher_db an.To limit the result set to subscriptions belonging to a single Publisher, publication, or published database, specify @publisher, @publication, or @publisher_db, respectively.

So überwachen Sie Transaktionsbefehle, die darauf warten, auf dem Abonnenten angewendet zu werdenTo monitor transactional commands waiting to be applied at the Subscriber

  1. Führen Sie auf dem Verteiler für die Verteilerdatenbank sp_replmonitorsubscriptionpendingcmdsaus.At the Distributor on the distribution database, execute sp_replmonitorsubscriptionpendingcmds. Dadurch werden Überwachungsinformationen zu allen Befehlen zurückgegeben, die für alle Abonnements ausstehen, die diesen Verteiler verwenden.This returns monitoring information for all commands pending for all subscriptions using this Distributor. Um das Resultset auf ausstehende Befehle für Abonnements zu beschränken, die nur einem Verleger, einem Abonnenten, einer Veröffentlichung oder einer veröffentlichten Datenbank angehören, geben Sie @publisher, @subscriber, @publication bzw. @publisher_db an.To limit the result set to commands pending for subscriptions belonging to a single Publisher, Subscriber, publication, or published database, specify @publisher, @subscriber, @publication, or @publisher_db, respectively.

So überwachen Sie Mergeänderungen, die darauf warten, hoch- oder heruntergeladen zu werdenTo monitor merge changes waiting to be uploaded or downloaded

  1. Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_showpendingchangesaus.At the Publisher on the publication database, execute sp_showpendingchanges. Dadurch wird ein Resultset mit Informationen zu Änderungen zurückgegeben, die darauf warten, auf Abonnenten repliziert zu werden.This returns a result set showing information on changes that are waiting to be replicated to Subscribers. Um das Resultset auf Änderungen zu beschränken, die nur einer Veröffentlichung oder einem Artikel angehören, geben Sie @publication bzw. @article an.To limit the result set to changes that belong to a single publication or article, specify @publication or @article, respectively.

  2. Führen Sie auf dem Abonnenten für die Abonnementdatenbank sp_showpendingchangesaus.At a Subscriber on the subscription database, execute sp_showpendingchanges. Dadurch wird ein Resultset mit Informationen zu Änderungen zurückgegeben, die darauf warten, auf dem Verleger repliziert zu werden.This returns a result set showing information on changes that are waiting to be replicated to the Publisher. Um das Resultset auf Änderungen zu beschränken, die nur einer Veröffentlichung oder einem Artikel angehören, geben Sie @publication bzw. @article an.To limit the result set to changes that belong to a single publication or article, specify @publication or @article, respectively.

So überwachen Sie Merge-AgentsitzungenTo monitor Merge Agent sessions

  1. Führen Sie auf dem Verteiler für die Verteilerdatenbank sp_replmonitorhelpmergesessionaus.At the Distributor on the distribution database, execute sp_replmonitorhelpmergesession. Dadurch werden zu allen Merge-Agentsitzungen für alle Abonnements, die diesen Verteiler verwenden, Überwachungsinformationen, beispielsweise Session_id, zurückgegeben.This returns monitoring information, including Session_id, on all Merge Agent sessions for all subscriptions using this Distributor. Sie können Session_id auch ermitteln, indem Sie eine Abfrage der MSmerge_sessions -Systemtabelle ausführen.You can also obtain Session_id by querying the MSmerge_sessions system table.

  2. Führen Sie auf dem Verteiler für die Verteilerdatenbank sp_replmonitorhelpmergesessiondetailaus.At the Distributor on the distribution database, execute sp_replmonitorhelpmergesessiondetail. Geben Sie einen Session_id-Wert aus Schritt 1 für @session_id an.Specify a Session_id value from step 1 for @session_id. Dadurch werden ausführliche Überwachungsinformationen zu der Sitzung angezeigt.This displays detailed monitor information about the session.

  3. Wiederholen Sie Schritt 2 für jede Sitzung, die von Interesse ist.Repeat step 2 for each session of interest.

So überwachen Sie Merge-Agentsitzungen für Pullabonnements auf dem AbonnentenTo monitor Merge Agent sessions for pull subscriptions from the Subscriber

  1. Führen Sie auf dem Abonnenten für die Abonnementdatenbank sp_replmonitorhelpmergesessionaus.At the Subscriber on the subscription database, execute sp_replmonitorhelpmergesession. Geben Sie für ein angegebenes Abonnement @publisher, @publication und den Namen der Veröffentlichungsdatenbank für @publisher_db an.For a given subscription, specify @publisher, @publication, and the name of the publication database for @publisher_db. Dadurch werden Überwachungsinformationen zu den letzten fünf Merge-Agentsitzungen für dieses Abonnement zurückgegeben.This returns monitoring information for the last five Merge Agent sessions for this subscription. Beachten Sie im Resultset den Wert Session_id für Sitzungen, die von Interesse sind.Note the value of Session_id for sessions of interest in the result set.

  2. Führen Sie auf dem Abonnenten für die Abonnementdatenbank sp_replmonitorhelpmergesessiondetailaus.At the Subscriber on the subscription database, execute sp_replmonitorhelpmergesessiondetail. Geben Sie einen Session_id-Wert aus Schritt 1 für @session_id an.Specify a Session_id value from step 1 for @session_id. Dadurch werden ausführliche Überwachungsinformationen zu der Sitzung angezeigt.This displays detailed monitoring information about the session.

  3. Wiederholen Sie Schritt 2 für jede Sitzung, die von Interesse ist.Repeat step 2 for each session of interest.

So können Sie die Schwellenwertmetriken für die Überwachung für eine Veröffentlichung anzeigen und ändernTo view and modify the monitor threshold metrics for a publication

  1. Führen Sie auf dem Verteiler für die Verteilerdatenbank sp_replmonitorhelppublicationthresholdsaus.At the Distributor on the distribution database, execute sp_replmonitorhelppublicationthresholds. Dadurch werden Überwachungsschwellenwerte zurückgegeben, die für alle Veröffentlichungen festgelegt wurden, die diesen Verteiler verwenden.This returns the monitoring thresholds set for all publications using this Distributor. Um das Resultset auf Überwachungsschwellenwerte für Veröffentlichungen festzulegen, die nur einem Verleger, einer veröffentlichten Datenbank oder einer Veröffentlichung angehören, geben Sie @publisher, @publisher_db bzw. @publication an.To limit the result set to monitor thresholds to publications belonging to a single Publisher or published database or to a single publication, specify @publisher, @publisher_db, or @publication, respectively. Beachten Sie den Wert Metric_id für alle Schwellenwerte, die geändert werden müssen.Note the value of Metric_id for any thresholds that must be changed. Weitere Informationen finden Sie unter Set Thresholds and Warnings in Replication Monitor.For more information, see Set Thresholds and Warnings in Replication Monitor.

  2. Führen Sie auf dem Verteiler für die Verteilerdatenbank sp_replmonitorchangepublicationthresholdaus.At the Distributor on the distribution database, execute sp_replmonitorchangepublicationthreshold. Geben Sie bei Bedarf Folgendes an:Specify the following as needed:

    • Den in Schritt 1 abgerufenen Metric_id-Wert für @metric_id.The Metric_id value obtained in step 1 for @metric_id.

    • Einen neuen Wert für die Überwachungsschwellenwertmetrik für @value.A new value for the monitor threshold metric for @value.

    • Den Wert 1 für @shouldalert, um beim Erreichen dieses Schwellenwerts eine Warnung zu protokollieren, oder den Wert 0, wenn keine Warnung erforderlich ist.A value of 1 for @shouldalert for an alert to be logged when this threshold is reached, or a value of 0 if an alert is not needed.

    • Den Wert 1 für @mode, um die Überwachungsschwellenwertmetrik zu aktivieren, oder den Wert 2, um diese zu deaktivieren.A value of 1 for @mode to enable the monitor threshold metric or a value of 2 to disable it.

Replikationsverwaltungsobjekte (RMO)Replication Management Objects (RMO)

So überwachen Sie ein Abonnement für eine Mergeveröffentlichung auf dem AbonnentenTo monitor a subscription to a merge publication at the Subscriber

  1. Erstellen Sie eine Verbindung mit dem Abonnenten, indem Sie die ServerConnection -Klasse verwenden.Create a connection to the Subscriber by using the ServerConnection class.

  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.Create an instance of the MergeSubscriberMonitor class, and set the Publisher, Publication, PublisherDB, SubscriberDB properties for the subscription, and set the ConnectionContext property to the ServerConnection created in step 1.

  3. Rufen Sie eine der folgenden Methoden auf, um Informationen zu Merge-Agentsitzungen für dieses Abonnement zurückzugeben:Call one of the following methods to return information on Merge Agent sessions for this subscription:

    • GetSessionsSummary - gibt ein Array von MergeSessionSummary -Objekten mit Informationen zu maximal den letzten fünf Merge-Agentsitzungen zurück.GetSessionsSummary - returns an array of MergeSessionSummary objects with information on up to the last five Merge Agent sessions. Beachten Sie den SessionId -Wert für alle Sitzungen, die von Interesse sind.Note the SessionId value for any sessions of interest.

    • 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).GetSessionsSummary - returns an array of MergeSessionSummary objects with information on Merge Agent sessions that have occurred during the past number of hours passed in as the hours parameter (up to the last five sessions). Beachten Sie den SessionId -Wert für alle Sitzungen, die von Interesse sind.Note the SessionId value for any sessions of interest.

    • GetLastSessionSummary - gibt ein MergeSessionSummary -Objekt mit Informationen zu der letzten Merge-Agentsitzung zurück.GetLastSessionSummary - returns a MergeSessionSummary object with information on the last Merge Agent session. Beachten Sie den SessionId -Wert für diese Sitzung.Note the SessionId value for this session.

    • GetSessionsSummaryDataSet - gibt ein DataSet -Objekt mit Informationen zu maximal den letzten fünf Merge-Agentsitzungen zurück (eine pro Zeile).GetSessionsSummaryDataSet - returns a DataSet object with information on up to the last five Merge Agent sessions, one in each row. Beachten Sie den Wert der Session_id -Spalte für alle Sitzungen, die von Interesse sind.Note the value of the Session_id column for any sessions of interest.

    • GetLastSessionSummaryDataRow - gibt ein DataRow -Objekt mit Informationen zu der letzten Merge-Agentsitzung zurück.GetLastSessionSummaryDataRow - returns a DataRow object with information on the last Merge Agent session. Beachten Sie den Wert der Session_id -Spalte für diese Sitzung.Note the value of the Session_id column for this session.

  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.(Optional) Call RefreshSessionSummary to refresh the data for the MergeSessionSummary object passed as mss, or call RefreshSessionSummary to refresh the data in the DataRow object passed as drRefresh.

  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:Using the session ID obtained in step 3, call one of the following methods to return information on the details of a particular session:

So überwachen Sie die Replikationseigenschaften für alle Veröffentlichungen auf einem VerteilerTo monitor replication properties for all publications at a Distributor

  1. Erstellen Sie eine Verbindung mit dem Verteiler, indem Sie die ServerConnection -Klasse verwenden.Create a connection to the Distributor by using the ServerConnection class.

  2. Erstellen Sie eine Instanz der ReplicationMonitor -Klasse.Create an instance of the ReplicationMonitor class.

  3. Legen Sie die ConnectionContext -Eigenschaft auf die in Schritt 1 erstellte ServerConnection fest.Set the ConnectionContext property to the ServerConnection created in step 1.

  4. Rufen Sie die LoadProperties -Methode auf, um die Eigenschaften des Objekts abzurufen.Call the LoadProperties method to get the properties of the object.

  5. Führen Sie mindestens eine der folgenden Methoden aus, um Replikationsinformationen für alle Verleger zurückzugeben, die diesen Verteiler verwenden:Execute one or more of the following methods to return replication information for all Publishers that use this Distributor.

So überwachen Sie die Veröffentlichungseigenschaften für einen bestimmten Verleger auf dem VerteilerTo monitor publication properties for a specific Publisher at the Distributor

  1. Erstellen Sie eine Verbindung mit dem Verteiler, indem Sie die ServerConnection -Klasse verwenden.Create a connection to the Distributor by using the ServerConnection class.

  2. Rufen Sie auf eine der folgenden Arten ein PublisherMonitor -Objekt ab.Get a PublisherMonitor object in one of these ways.

  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.Execute one or more of the following methods to return replication information for all publications that belong to this Publisher.

So überwachen Sie die Eigenschaften für eine bestimmte Veröffentlichung auf dem VerteilerTo monitor properties for a specific publication at the Distributor

  1. Erstellen Sie eine Verbindung mit dem Verteiler, indem Sie die ServerConnection -Klasse verwenden.Create a connection to the Distributor by using the ServerConnection class.

  2. Rufen Sie auf eine der folgenden Arten ein PublicationMonitor -Objekt ab.Get a PublicationMonitor object in one of these ways.

  3. Führen Sie mindestens eine der folgenden Methoden aus, um Informationen zu dieser Veröffentlichung zurückzugeben.Execute one or more of the following methods to return information about this publication.

So überwachen Sie Transaktionsbefehle, die darauf warten, auf dem Abonnenten angewendet zu werdenTo monitor transactional commands that are waiting to be applied at the Subscriber

  1. Erstellen Sie eine Verbindung mit dem Verteiler, indem Sie die ServerConnection -Klasse verwenden.Create a connection to the Distributor by using the ServerConnection class.

  2. Rufen Sie auf eine der folgenden Arten ein PublicationMonitor -Objekt ab.Get a PublicationMonitor object in one of these ways.

  3. Führen Sie die TransPendingCommandInfo -Methode aus, die ein PendingCommandInfo -Objekt zurückgibt.Execute the TransPendingCommandInfo method, which returns a PendingCommandInfo object.

  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.Use the properties of this PendingCommandInfo object to determine the estimated number of pending commands and the length of time it will take to complete the delivery of these commands.

So legen Sie die Warnungsschwellenwerte für die Überwachung für eine Veröffentlichung festTo set the monitor warning thresholds for a publication

  1. Erstellen Sie eine Verbindung mit dem Verteiler, indem Sie die ServerConnection -Klasse verwenden.Create a connection to the Distributor by using the ServerConnection class.

  2. Rufen Sie auf eine der folgenden Arten ein PublicationMonitor -Objekt ab.Get a PublicationMonitor object in one of these ways.

  3. Führen Sie die EnumMonitorThresholds -Methode aus.Execute the EnumMonitorThresholds method. Beachten Sie die aktuellen Schwellenwerteinstellungen in der zurückgegebenen ArrayList von MonitorThreshold -Objekten.Note the current threshold settings in the returned ArrayList of MonitorThreshold objects.

  4. Führen Sie die ChangeMonitorThreshold -Methode aus.Execute the ChangeMonitorThreshold method. Übergeben Sie die folgenden Parameter:Pass the following parameters:

    • metricID - ein Int32 -Wert, der die Schwellenwertmetrik für die Überwachung aus der folgenden Tabelle darstellt:metricID - an Int32 value that represents the monitoring threshold metric from the following table:

      valueValue und BeschreibungDescription
      11 expiration - überwacht den bevorstehenden Ablauf von Abonnements für Transaktionsveröffentlichungen.expiration - monitors for imminent expiration of subscriptions to transactional publications.
      22 latency - überwacht die Leistung von Abonnements für Transaktionsveröffentlichungen.latency - monitors for the performance of subscriptions to transactional publications.
      44 mergeexpiration - überwacht den bevorstehenden Ablauf von Abonnements für Mergeveröffentlichungen.mergeexpiration - monitors for imminent expiration of subscriptions to merge publications.
      55 mergeslowrunduration - überwacht die Dauer von Mergesynchronisierungen über Verbindungen mit niedriger Bandbreite (DFÜ-Verbindungen).mergeslowrunduration - monitors the duration of merge synchronizations over low-bandwidth (dialup) connections.
      66 mergefastrunduration - überwacht die Dauer von Mergesynchronisierungen über Verbindungen mit niedriger Bandbreite (DFÜ-Verbindungen).mergefastrunduration - monitors the duration of merge synchronizations over high-bandwidth (LAN) connections.
      77 mergefastrunspeed - Überwachung der Synchronisierungsgeschwindigkeit von Mergesynchronisierungen über Verbindungen mit hoher Bandbreite (LAN-Verbindungen).mergefastrunspeed - monitors the synchronization rate of merge synchronizations over high-bandwidth (LAN) connections.
      88 mergeslowrunspeed - überwacht die Synchronisierungsgeschwindigkeit von Mergesynchronisierungen über Verbindungen mit niedriger Bandbreite (DFÜ-Verbindungen).mergeslowrunspeed - monitors the synchronization rate of merge synchronizations over low-bandwidth (dialup) connections.
    • enable - Boolean -Wert, der angibt, ob die Metrik für die Veröffentlichung aktiviert ist.enable - Boolean value that indicates whether the metric is enabled for the publication.

    • thresholdValue - ganzzahliger Wert, der den Schwellenwert festlegt.thresholdValue - integer value that sets the threshold.

    • shouldAlert - ganze Zahl, die angibt, ob dieser Schwellenwert eine Warnung generieren soll.shouldAlert - integer that indicates whether this threshold should generate an alert.