Messen der Latenzzeit und Überprüfen der Verbindungen bei TransaktionsreplikationenMeasure Latency and Validate Connections for Transactional 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

In diesem Thema wird beschrieben, wie die Latenzzeit gemessen wird und Verbindungen für Transaktionsreplikation in SQL ServerSQL Server mit Replikationsmonitor, Transact-SQLTransact-SQLoder Replikationsverwaltungsobjekten (RMO) überprüft werden.This topic describes how to measure latency and validate connections for transactional replication in SQL ServerSQL Server by using Replication Monitor, Transact-SQLTransact-SQL, or Replication Management Objects (RMO). Die Transaktionsreplikation bietet die Überwachungstokenfunktion, die eine praktische Möglichkeit zum Messen der Latenzzeit bei Transaktionsreplikationstopologien und zur Überprüfung der Verbindungen zwischen dem Verleger, dem Verteiler und den Abonnenten darstellt.Transactional replication provides the tracer token feature, which provides a convenient way to measure latency in transactional replication topologies and to validate the connections between the Publisher, Distributor and Subscribers. Ein Token (eine geringe Mange an Daten) wird in das Transaktionsprotokoll der Veröffentlichungsdatenbank geschrieben, wie eine normale replizierte Transaktion gekennzeichnet und über das System gesendet. Auf diese Weise werden die folgenden Berechnungen ermöglicht:A token (a small amount of data) is written to the transaction log of the publication database, marked as though it were a typical replicated transaction, and sent through the system, allowing a calculation of:

  • Wie viel Zeit zwischen dem Commit einer Transaktion auf dem Verleger und dem Einfügen des zugehörigen Befehls in die Verteilungsdatenbank auf dem Verteiler verstreicht.How much time elapses between a transaction being committed at the Publisher and the corresponding command being inserted in the distribution database at the Distributor.

  • Wie viel Zeit zwischen dem Einfügen eines Befehls in die Verteilungsdatenbank und dem zugehörigen Commit einer Transaktion auf dem Abonnenten verstreicht.How much time elapses between a command being inserted in the distribution database and the corresponding transaction being committed at a Subscriber.

Mithilfe dieser Berechnungen können Sie verschiedene Fragen beantworten. Unter anderem diese:From these calculations, you can answer a number of questions, including:

  • Welche Abonnenten benötigen am längsten, um eine Änderung vom Verleger zu empfangen?Which Subscribers take the longest to receive a change from the Publisher?

  • Welcher der Abonnenten, die Überwachungstoken empfangen sollten, hat keine empfangen?Of the Subscribers expected to receive the tracer token, which, if any, have not received it?

In diesem ThemaIn This Topic

VorbereitungenBefore You Begin

EinschränkungenLimitations and Restrictions

Überwachungstoken können sich auch als nützlich erweisen, wenn ein System in den Ruhezustand versetzt wird, da hierfür alle Aktivitäten beendet werden und überprüft wird, ob alle Knoten sämtliche ausstehenden Änderungen empfangen haben.Tracer tokens can also be useful when quiescing a system, which involves stopping all activity and verifying that all nodes have received all outstanding changes. Weitere Informationen finden Sie unter Versetzen einer Replikationstopologie in einen inaktiven Status (Replikationsprogrammierung mit Transact-SQL).For more information, see Quiesce a Replication Topology (Replication Transact-SQL Programming).

Für die Verwendung von Überwachungstoken müssen Sie bestimmte Versionen von MicrosoftMicrosoft SQL ServerSQL Serververwenden:To use tracer tokens, you must use certain versions of MicrosoftMicrosoft SQL ServerSQL Server:

  • Der Verteiler muss MicrosoftMicrosoft SQL Server 2005 (9.x)SQL Server 2005 (9.x) oder höher sein.The Distributor must be MicrosoftMicrosoft SQL Server 2005 (9.x)SQL Server 2005 (9.x) or later.

  • Der Verleger muss SQL Server 2005 (9.x)SQL Server 2005 (9.x) oder höher aufweisen, oder es muss sich um einen Oracle-Verleger handeln.The Publisher must be SQL Server 2005 (9.x)SQL Server 2005 (9.x) or later or be an Oracle Publisher.

  • Im Fall von Pushabonnements werden Überwachungstokenstatistiken vom Verleger, Verteiler und von den Abonnenten gesammelt, sofern der Abonnent MicrosoftMicrosoft SQL ServerSQL Server 7.0 oder höher aufweist.For push subscriptions, tracer token statistics are gathered from the Publisher, Distributor, and Subscribers if the Subscriber is MicrosoftMicrosoft SQL ServerSQL Server 7.0 or later.

  • Im Fall von Pullabonnements werden Überwachungstokenstatistiken von Abonnenten gesammelt, sofern der Abonnent SQL Server 2005 (9.x)SQL Server 2005 (9.x) oder höher aufweist.For pull subscriptions, tracer token statistics are gathered from Subscribers only if the Subscriber is SQL Server 2005 (9.x)SQL Server 2005 (9.x) or later. Falls der Abonnent SQL ServerSQL Server 7.0 oder MicrosoftMicrosoft SQL Server 2000 (8.x)SQL Server 2000 (8.x)aufweist, werden Statistiken nur vom Verleger und vom Verteiler gesammelt.If the Subscriber is SQL ServerSQL Server 7.0 or MicrosoftMicrosoft SQL Server 2000 (8.x)SQL Server 2000 (8.x), statistics are gathered only from the Publisher and Distributor.

Es gibt eine Vielzahl anderer Probleme und Einschränkungen, auf die geachtet werden muss:There are also a number of other issues and restrictions to be aware of:

  • Abonnements müssen aktiv sein, um ein Überwachungstoken zu empfangen.Subscriptions must be active to receive a tracer token. Ein Abonnement ist aktiv, wenn es initialisiert wurde.A subscription is active if it has been initialized.

  • Durch die erneute Initialisierung werden sämtliche ausstehenden Überwachungstoken für die relevanten Abonnements entfernt.Reinitialization removes any pending tracer tokens for the relevant subscriptions.

  • Abonnenten empfangen nur Überwachungstoken, die nach ihrer Erstsynchronisierung erstellt wurden.Subscribers only receive tracer tokens that were created after their initial synchronization.

  • Überwachungstoken werden nicht von Abonnenten weitergeleitet, die Wiederveröffentlichungen ausführen.Tracer tokens are not forwarded by republishing Subscribers.

  • Der Replikationsmonitor kann den Namen der Veröffentlichungsinstanz von SQL ServerSQL Server nach einem Failover zu einer sekundären Instanz nicht anpassen und zeigt weiterhin Replikationsinformationen unter dem Namen der ursprünglichen primären Instanz von SQL ServerSQL Serveran.After failover to a secondary, Replication Monitor is unable to adjust the name of the publishing instance of SQL ServerSQL Server and will continue to display replication information under the name of the original primary instance of SQL ServerSQL Server. Nach einem Failover kann kein Überwachungstoken mit dem Replikationsmonitor eingegeben werden, ein mit Transact-SQLTransact-SQLauf dem neuen Verleger eingegebenes Überwachungstoken wird jedoch im Replikationsmonitor angezeigt.After failover, a tracer token cannot be entered by using the Replication Monitor, however a tracer token entered on the new publisher by using Transact-SQLTransact-SQL, is visible in Replication Monitor.

Verwenden von SQL Server-ReplikationsmonitorUsing SQL Server Replication Monitor

Informationen zum Starten des Replikationsmonitors finden Sie unter Starten des Replikationsmonitors.For information about starting Replication Monitor, see Start the Replication Monitor.

So fügen Sie ein Überwachungstoken ein und zeigen Informationen zum Token anTo insert a tracer token and view information on the token

  1. Erweitern Sie im linken Bereich eine Verlegergruppe, erweitern Sie einen Verleger, und klicken Sie dann auf eine Veröffentlichung.Expand a Publisher group in the left pane, expand a Publisher, and then click a publication.

  2. Klicken Sie auf die Registerkarte Überwachungstoken .Click the Tracer Tokens tab.

  3. Klicken Sie auf Überwachung einfügen.Click Insert Tracer.

  4. Zeigen Sie die verstrichene Zeit für das Überwachungstoken in den folgenden Spalten an: Verleger zu Verteiler, Verteiler zu Abonnent, Gesamtlatenzzeit.View elapsed time for the tracer token in the following columns: Publisher to Distributor, Distributor to Subscriber, Total Latency. Mit dem Wert Ausstehend wird angegeben, dass das Token noch nicht den Bestimmungspunkt erreicht hat.A value of Pending indicates that the token has not reached a given point.

So zeigen Sie Informationen zu früher eingefügten Überwachungstoken anTo view information on a tracer token inserted previously

  1. Erweitern Sie im linken Bereich eine Verlegergruppe, erweitern Sie einen Verleger, und klicken Sie dann auf eine Veröffentlichung.Expand a Publisher group in the left pane, expand a Publisher, and then click a publication.

  2. Klicken Sie auf die Registerkarte Überwachungstoken .Click the Tracer Tokens tab.

  3. Wählen Sie in der Dropdownliste Einfügungszeitpunkt eine Zeit aus.Select a time from the Time inserted drop-down list.

  4. Zeigen Sie die verstrichene Zeit für das Überwachungstoken in den folgenden Spalten an: Verleger zu Verteiler, Verteiler zu Abonnent, Gesamtlatenzzeit.View elapsed time for the tracer token in the following columns: Publisher to Distributor, Distributor to Subscriber, Total Latency. Mit dem Wert Ausstehend wird angegeben, dass das Token noch nicht den Bestimmungspunkt erreicht hat.A value of Pending indicates that the token has not reached a given point.

    Hinweis

    Die Informationen von Überwachungstoken werden für denselben Zeitraum wie andere Vergangenheitsdaten beibehalten. Der Zeitraum wird durch die Aufbewahrungsdauer für den Verlauf der Verteilungsdatenbank festgelegt.Tracer token information is retained for the same time period as other historical data, which is governed by the history retention period of the distribution database. Weitere Informationen zum Ändern der Eigenschaften der Verteilungsdatenbank finden Sie unter Anzeigen und Ändern der Verteiler- und Verlegereigenschaften.For information about changing distribution database properties, see View and Modify Distributor and Publisher Properties.

Verwenden von Transact-SQLUsing Transact-SQL

So stellen Sie ein Überwachungstoken für eine Transaktionsveröffentlichung bereitTo post a tracer token to a transactional publication

  1. (Optional) Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_helppublication (Transact-SQL) aus.(Optional) At the Publisher on the publication database, execute sp_helppublication (Transact-SQL). Stellen Sie sicher, dass die Veröffentlichung vorhanden und der Status aktiv ist.Verify that the publication exists and that the status is active.

  2. (Optional) Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_helpsubscription (Transact-SQL) aus.(Optional) At the Publisher on the publication database, execute sp_helpsubscription (Transact-SQL). Stellen Sie sicher, dass das Abonnement vorhanden und der Status aktiv ist.Verify that the subscription exists and that the status is active.

  3. Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_posttracertoken (Transact-SQL) aus, und geben Sie @publication an.At the Publisher on the publication database, execute sp_posttracertoken (Transact-SQL), specifying @publication. Beachten Sie den Wert des @tracer_token_id-Ausgabeparameters.Note the value of the @tracer_token_id output parameter.

So können Sie die Latenzzeit bestimmen und die Verbindungen für eine Transaktionveröffentlichung überprüfenTo determine latency and validate connections for a transactional publication

  1. Stellen Sie mithilfe der vorherigen Prozedur ein Überwachungstoken für die Veröffentlichung bereit.Post a tracer token to the publication using the previous procedure.

  2. Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_helptracertokens (Transact-SQL) aus, und geben Sie @publication an.At the Publisher on the publication database, execute sp_helptracertokens (Transact-SQL), specifying @publication. Dadurch wird eine Liste aller für die Veröffentlichung bereitgestellten Überwachungstoken zurückgegeben.This returns a list of all tracer tokens posted to the publication. Beachten Sie die gewünschte tracer_id im Resultset.Note the desired tracer_id in the result set.

  3. Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_helptracertokenhistory (Transact-SQL) aus. Geben Sie hierbei @publication und die Überwachungstoken-ID aus Schritt 2 für @tracer_id an.At the Publisher on the publication database, execute sp_helptracertokenhistory (Transact-SQL), specifying @publication and the tracer token ID from step 2 for @tracer_id. Dadurch werden Latenzzeitinformationen für das ausgewählte Überwachungstoken zurückgegeben.This returns latency information for the selected tracer token.

So entfernen Sie ÜberwachungstokenTo remove tracer tokens

  1. Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_helptracertokens (Transact-SQL) aus, und geben Sie @publication an.At the Publisher on the publication database, execute sp_helptracertokens (Transact-SQL), specifying @publication. Dadurch wird eine Liste aller für die Veröffentlichung bereitgestellten Überwachungstoken zurückgegeben.This returns a list of all tracer tokens posted to the publication. Beachten Sie die tracer_id für das zu löschende Überwachungstoken im Resultset.Note the tracer_id for the tracer token to delete in the result set.

  2. Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_deletetracertokenhistory (Transact-SQL) aus. Geben Sie hierbei @publication und die ID des zu löschenden Überwachungstokens aus Schritt 2 für @tracer_id an.At the Publisher on the publication database, execute sp_deletetracertokenhistory (Transact-SQL), specifying @publication and the ID of the tracer to delete from step 2 for @tracer_id.

Beispiel (Transact-SQL)Example (Transact-SQL)

In diesem Beispiel wird ein Überwachungstoken-Datensatz bereitgestellt, und dann werden mithilfe der zurückgegebenen ID des bereitgestellten Überwachungstokens Latenzinformationen angezeigt.This example posts a tracer token record and uses the returned ID of the posted tracer token to view latency information.

DECLARE @publication AS sysname;
DECLARE @tokenID AS int;
SET @publication = N'AdvWorksProductTran'; 

USE [AdventureWorks2012]

-- Insert a new tracer token in the publication database.
EXEC sys.sp_posttracertoken 
  @publication = @publication,
  @tracer_token_id = @tokenID OUTPUT;
SELECT 'The ID of the new tracer token is ''' + 
    CONVERT(varchar,@tokenID) + '''.'
GO

-- Wait 10 seconds for the token to make it to the Subscriber.
WAITFOR DELAY '00:00:10';
GO

-- Get latency information for the last inserted token.
DECLARE @publication AS sysname;
DECLARE @tokenID AS int;
SET @publication = N'AdvWorksProductTran'; 

CREATE TABLE #tokens (tracer_id int, publisher_commit datetime)

-- Return tracer token information to a temp table.
INSERT #tokens (tracer_id, publisher_commit)
EXEC sys.sp_helptracertokens @publication = @publication;
SET @tokenID = (SELECT TOP 1 tracer_id FROM #tokens
ORDER BY publisher_commit DESC)
DROP TABLE #tokens

-- Get history for the tracer token.
EXEC sys.sp_helptracertokenhistory 
  @publication = @publication, 
  @tracer_id = @tokenID;
GO

Verwenden von Replikationsverwaltungsobjekten (RMO)Using Replication Management Objects (RMO)

So stellen Sie ein Überwachungstoken für eine Transaktionsveröffentlichung bereitTo post a tracer token to a transactional publication

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

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

  3. Legen Sie die Name -Eigenschaft und die DatabaseName -Eigenschaft für die Veröffentlichung fest, und legen Sie die ConnectionContext -Eigenschaft auf die in Schritt 1 erstellte Verbindung fest.Set the Name and DatabaseName properties for the publication, and set the ConnectionContext property to the connection 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. Wenn diese Methode falsezurückgibt, sind die Veröffentlichungseigenschaften in Schritt 3 falsch definiert, oder die Veröffentlichung ist nicht vorhanden.If this method returns false, either the publication properties in step 3 were defined incorrectly or the publication does not exist.

  5. Rufen Sie die PostTracerToken -Methode auf.Call the PostTracerToken method. Mit dieser Methode wird ein Überwachungstoken in das Transaktionsprotokoll der Veröffentlichung eingefügt.This method inserts a tracer token into the publication's transaction log.

So können Sie die Latenzzeit bestimmen und die Verbindungen für eine Transaktionveröffentlichung überprüfenTo determine latency and validate connections for a transactional 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. Erstellen Sie eine Instanz der PublicationMonitor -Klasse.Create an instance of the PublicationMonitor class.

  3. Legen Sie die Eigenschaften Name, DistributionDBName, PublisherNameund PublicationDBName fest, und legen Sie die ConnectionContext -Eigenschaft auf die in Schritt 1 erstellte Verbindung fest.Set the Name, DistributionDBName, PublisherName, and PublicationDBName properties, and set the ConnectionContext property to the connection 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. Wenn diese Methode falsezurückgibt, wurden entweder den in Schritt 3 genannten Eigenschaften der Klasse PublicationMonitor falsche Werte zugewiesen, oder die Veröffentlichung ist nicht vorhanden.If this method returns false, either the publication monitor properties in step 3 were defined incorrectly or the publication does not exist.

  5. Rufen Sie die EnumTracerTokens -Methode auf.Call the EnumTracerTokens method. Wandeln Sie das zurückgegebene ArrayList -Objekt in ein Array von TracerToken -Objekten um.Cast the returned ArrayList object to an array of TracerToken objects.

  6. Rufen Sie die EnumTracerTokenHistory -Methode auf.Call the EnumTracerTokenHistory method. Übergeben Sie einen Wert TracerTokenId für ein Überwachungstoken aus Schritt 5.Pass a value of TracerTokenId for a tracer token from step 5. Dadurch werden Latenzzeitinformationen für das ausgewählte Überwachungstoken als DataSet -Objekt zurückgegeben.This returns latency information for the selected tracer token as a DataSet object. Wenn alle Informationen des Überwachungstokens zurückgegeben wurden, besteht die Verbindung zwischen dem Verleger und dem Verteiler sowie die Verbindung zwischen dem Verteiler und dem Abonnenten, und die Replikationstopologie ist funktionsfähig.If all tracer token information is returned, the connection between the Publisher and Distributor and the connection between the Distributor and the Subscriber both exist and the replication topology is functioning.

So entfernen Sie ÜberwachungstokenTo remove tracer tokens

  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 PublicationMonitor -Klasse.Create an instance of the PublicationMonitor class.

  3. Legen Sie die Eigenschaften Name, DistributionDBName, PublisherNameund PublicationDBName fest, und legen Sie die ConnectionContext -Eigenschaft auf die in Schritt 1 erstellte Verbindung fest.Set the Name, DistributionDBName, PublisherName, and PublicationDBName properties, and set the ConnectionContext property to the connection 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. Wenn diese Methode falsezurückgibt, wurden entweder den in Schritt 3 genannten Eigenschaften der Klasse PublicationMonitor falsche Werte zugewiesen, oder die Veröffentlichung ist nicht vorhanden.If this method returns false, either the publication monitor properties in step 3 were defined incorrectly or the publication does not exist.

  5. Rufen Sie die EnumTracerTokens -Methode auf.Call the EnumTracerTokens method. Wandeln Sie das zurückgegebene ArrayList -Objekt in ein Array von TracerToken -Objekten um.Cast the returned ArrayList object to an array of TracerToken objects.

  6. Rufen Sie die CleanUpTracerTokenHistory -Methode auf.Call the CleanUpTracerTokenHistory method. Übergeben Sie einen der folgenden Werte:Pass one of the following values:

    • TracerTokenId für ein Überwachungstoken aus Schritt 5.The TracerTokenId for a tracer token from step 5. Dadurch werden die Informationen für ein ausgewähltes Token gelöscht.This deletes information for a selected token.

    • Ein DateTime -Objekt.A DateTime object. Dadurch werden die Informationen für alle Token gelöscht, die älter sind als das angegebene Datum und die angegebene Uhrzeit.This deletes information for all tokens older than the specified date and time.