Messen der Latenzzeit und Überprüfen der Verbindungen bei Transaktionsreplikationen

Gilt für:SQL ServerAzure SQL Managed Instance

In diesem Thema wird beschrieben, wie Sie Die Latenz messen und Verbindungen für die Transaktionsreplikation in SQL Server mithilfe von Replikationsmonitor, Transact-SQL oder Replikationsverwaltungsobjekten (Replication Management Objects, RMO) überprüfen. 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. 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:

  • 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.

  • Wie viel Zeit zwischen dem Einfügen eines Befehls in die Verteilungsdatenbank und dem zugehörigen Commit einer Transaktion auf dem Abonnenten verstreicht.

Mithilfe dieser Berechnungen können Sie verschiedene Fragen beantworten. Unter anderem diese:

  • Welche Abonnenten benötigen am längsten, um eine Änderung vom Verleger zu empfangen?

  • Welcher der Abonnenten, die Überwachungstoken empfangen sollten, hat keine empfangen?

In diesem Thema

Vorbereitungen

Einschränkungen

Ü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. Weitere Informationen finden Sie unter Versetzen einer Replikationstopologie in einen inaktiven Status (Replikationsprogrammierung mit Transact-SQL).

Um Ablaufverfolgungstoken zu verwenden, müssen Sie bestimmte Versionen von Microsoft SQL Server verwenden:

  • Der Distributor muss Microsoft SQL Server 2005 (9.x) oder höher sein.

  • Der Publisher muss SQL Server 2005 (9.x) oder höher oder ein Oracle Publisher sein.

  • Für Pushabonnements werden Ablaufverfolgungstokenstatistiken von Publisher, Distributor und Abonnenten erfasst, wenn der Abonnent Microsoft SQL Server 7.0 oder höher ist.

  • Für Pullabonnements werden Ablaufverfolgungstokenstatistiken nur dann von Abonnenten erfasst, wenn der Abonnent SQL Server 2005 (9.x) oder höher ist. Wenn der Abonnent SQL Server 7.0 oder Microsoft SQL Server 2000 (8.x) ist, werden Statistiken nur vom Publisher und Distributor erfasst.

Es gibt eine Vielzahl anderer Probleme und Einschränkungen, auf die geachtet werden muss:

  • Abonnements müssen aktiv sein, um ein Überwachungstoken zu empfangen. Ein Abonnement ist aktiv, wenn es initialisiert wurde.

  • Durch die erneute Initialisierung werden sämtliche ausstehenden Überwachungstoken für die relevanten Abonnements entfernt.

  • Abonnenten empfangen nur Überwachungstoken, die nach ihrer Erstsynchronisierung erstellt wurden.

  • Überwachungstoken werden nicht von Abonnenten weitergeleitet, die Wiederveröffentlichungen ausführen.

  • Nach dem Failover zu einer sekundären Replikationsüberwachung kann der Name der Veröffentlichungsinstanz von SQL Server nicht angepasst werden und zeigt weiterhin Replikationsinformationen unter dem Namen der ursprünglichen primären Instanz von SQL Server an. Nach einem Failover kann kein Überwachungstoken mit dem Replikationsmonitor eingegeben werden. Ein mit Transact-SQL auf dem neuen Verleger eingegebenes Überwachungstoken wird jedoch im Replikationsmonitor angezeigt.

Verwenden von SQL Server-Replikationsmonitor

Informationen zum Starten des Replikationsmonitors finden Sie unter Starten des Replikationsmonitors.

So fügen Sie ein Überwachungstoken ein und zeigen Informationen zum Token an

  1. Erweitern Sie im linken Bereich eine Verlegergruppe, erweitern Sie einen Verleger, und klicken Sie dann auf eine Veröffentlichung.

  2. Klicken Sie auf die Registerkarte Überwachungstoken .

  3. Klicken Sie auf Überwachung einfügen.

  4. In den folgenden Spalten sehen Sie die für das Überwachungstoken benötigte Zeit: Verleger zu Verteiler, Verteiler zu Abonnent, Gesamtlatenzzeit. Mit dem Wert Ausstehend wird angegeben, dass das Token noch nicht den Bestimmungspunkt erreicht hat.

So zeigen Sie Informationen zu früher eingefügten Überwachungstoken an

  1. Erweitern Sie im linken Bereich eine Verlegergruppe, erweitern Sie einen Verleger, und klicken Sie dann auf eine Veröffentlichung.

  2. Klicken Sie auf die Registerkarte Überwachungstoken .

  3. Wählen Sie in der Dropdownliste Einfügungszeitpunkt eine Zeit aus.

  4. In den folgenden Spalten sehen Sie die für das Überwachungstoken benötigte Zeit: Verleger zu Verteiler, Verteiler zu Abonnent, Gesamtlatenzzeit. Mit dem Wert Ausstehend wird angegeben, dass das Token noch nicht den Bestimmungspunkt erreicht hat.

    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. Weitere Informationen zum Ändern der Eigenschaften der Verteilungsdatenbank finden Sie unter Anzeigen und Ändern der Verteiler- und Verlegereigenschaften.

Verwenden von Transact-SQL

So stellen Sie ein Überwachungstoken für eine Transaktionsveröffentlichung bereit

  1. (Optional) Führen Sie im Publisher in der Publikationsdatenbank sp_helppublication (Transact-SQL) aus. Stellen Sie sicher, dass die Veröffentlichung vorhanden und der Status aktiv ist.

  2. (Optional) Führen Sie im Publisher in der Publikationsdatenbank sp_helpsubscription (Transact-SQL) aus. Stellen Sie sicher, dass das Abonnement vorhanden und der Status aktiv ist.

  3. Führen Sie in publisher in der Publikationsdatenbank sp_posttracertoken (Transact-SQL) aus, und geben Sie @publication an. Beachten Sie den Wert des @ tracer_token_id -Ausgabeparameters.

So können Sie die Latenzzeit bestimmen und die Verbindungen für eine Transaktionveröffentlichung überprüfen

  1. Stellen Sie mithilfe der vorherigen Prozedur ein Überwachungstoken für die Veröffentlichung bereit.

  2. Führen Sie in publisher in der Publikationsdatenbank sp_helptracertokens (Transact-SQL) aus, und geben Sie @publication an. Dadurch wird eine Liste aller für die Veröffentlichung bereitgestellten Überwachungstoken zurückgegeben. Beachten Sie die gewünschte tracer_id im Resultset.

  3. Führen Sie in publisher in der Publikationsdatenbank sp_helptracertokenhistory (Transact-SQL) aus, und geben Sie @publication und die Ablaufverfolgungstoken-ID aus Schritt 2 für @tracer_id an. Dadurch werden Latenzzeitinformationen für das ausgewählte Überwachungstoken zurückgegeben.

So entfernen Sie Überwachungstoken

  1. Führen Sie in publisher in der Publikationsdatenbank sp_helptracertokens (Transact-SQL) aus, und geben Sie @publication an. Dadurch wird eine Liste aller für die Veröffentlichung bereitgestellten Überwachungstoken zurückgegeben. Beachten Sie die tracer_id für das zu löschende Überwachungstoken im Resultset.

  2. Führen Sie in Publisher in der Publikationsdatenbank sp_deletetracertokenhistory (Transact-SQL) aus, und geben Sie @publication und die ID des Ablaufverfolgungselements an, das aus Schritt 2 gelöscht @tracer_idwerden soll.

Beispiel (Transact-SQL)

In diesem Beispiel wird ein Überwachungstoken-Datensatz bereitgestellt, und dann werden mithilfe der zurückgegebenen ID des bereitgestellten Überwachungstokens Latenzinformationen angezeigt.

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

USE [AdventureWorks2022]

-- 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)

So stellen Sie ein Überwachungstoken für eine Transaktionsveröffentlichung bereit

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

  2. Erstellen Sie eine Instanz der TransPublication-Klasse.

  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.

  4. Rufen Sie die LoadProperties -Methode auf, um die Eigenschaften des Objekts abzurufen. Wenn diese Methode falsezurückgibt, sind die Veröffentlichungseigenschaften in Schritt 3 falsch definiert, oder die Veröffentlichung ist nicht vorhanden.

  5. Rufen Sie die PostTracerToken-Methode auf. Mit dieser Methode wird ein Überwachungstoken in das Transaktionsprotokoll der Veröffentlichung eingefügt.

So können Sie die Latenzzeit bestimmen und die Verbindungen für eine Transaktionveröffentlichung überprüfen

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

  2. Erstellen Sie eine Instanz der PublicationMonitor-Klasse.

  3. Legen Sie die Eigenschaften Name, DistributionDBName, PublisherNameund PublicationDBName fest, und legen Sie die ConnectionContext -Eigenschaft auf die in Schritt 1 erstellte Verbindung fest.

  4. Rufen Sie die LoadProperties -Methode auf, um die Eigenschaften des Objekts abzurufen. 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.

  5. Rufen Sie die EnumTracerTokens-Methode auf. Wandeln Sie das zurückgegebene ArrayList -Objekt in ein Array von TracerToken -Objekten um.

  6. Rufen Sie die EnumTracerTokenHistory-Methode auf. Übergeben Sie einen Wert TracerTokenId für ein Überwachungstoken aus Schritt 5. Dadurch werden Latenzzeitinformationen für das ausgewählte Überwachungstoken als DataSet -Objekt zurückgegeben. 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.

So entfernen Sie Überwachungstoken

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

  2. Erstellen Sie eine Instanz der PublicationMonitor-Klasse.

  3. Legen Sie die Eigenschaften Name, DistributionDBName, PublisherNameund PublicationDBName fest, und legen Sie die ConnectionContext -Eigenschaft auf die in Schritt 1 erstellte Verbindung fest.

  4. Rufen Sie die LoadProperties -Methode auf, um die Eigenschaften des Objekts abzurufen. 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.

  5. Rufen Sie die EnumTracerTokens-Methode auf. Wandeln Sie das zurückgegebene ArrayList -Objekt in ein Array von TracerToken -Objekten um.

  6. Rufen Sie die CleanUpTracerTokenHistory-Methode auf. Übergeben Sie einen der folgenden Werte:

    • TracerTokenId für ein Überwachungstoken aus Schritt 5. Dadurch werden die Informationen für ein ausgewähltes Token gelöscht.

    • Ein DateTime-Objekt. Dadurch werden die Informationen für alle Token gelöscht, die älter sind als das angegebene Datum und die angegebene Uhrzeit.