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

Gilt für:SQL ServerAzure SQL Managed Instance

In diesem Thema wird beschrieben, wie die Latenzzeit gemessen wird und wie Verbindungen für Transaktionsreplikation in SQL Server mit Replikationsmonitor, Transact-SQL oder Replikationsverwaltungsobjekten (RMO) überprüft werden. 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 vergeht zwischen der Bestätigung einer Transaktion beim Publisher und dem Einfügen des entsprechenden Befehls in die Verteilungsdatenbank beim Distributor.

  • Wie viel Zeit vergeht, zwischen dem Einfügen eines Befehls in die Verteilungsdatenbank und dem Committen der zugehörigen Transaktion beim Abonnenten.

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?

  • Welche der Abonnenten, die das Tracer-Token erhalten sollten, haben es gegebenenfalls nicht erhalten?

Beschränkungen und Einschränkungen

Tracer-Token können auch nützlich sein, wenn ein System in einen inaktiven Zustand versetzt wird; dazu müssen alle Aktivitäten gestoppt und es muss überprüft werden, dass alle Knoten alle noch ausstehenden Änderungen erhalten haben. Weitere Informationen finden Sie unter Versetzen einer Replikationstopologie in einen inaktiven Status (Replikationsprogrammierung mit Transact-SQL).

Zur Verwendung von Tracer Tokens müssen Sie bestimmte Versionen von Microsoft SQL Server verwenden:

  • Der Verteiler muss Microsoft SQL Server 2005 (9.x) oder eine höhere Version sein.

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

  • Im Fall von Pushabonnements werden Überwachungstokenstatistiken vom Verleger, vom Verteiler und von den Abonnenten gesammelt, sofern der Abonnent Microsoft SQL Server 7.0 oder eine höhere Version hat.

  • Bei Pull-Abonnements werden Tracer-Token-Statistiken nur von Abonnenten erfasst, wenn der Abonnent SQL Server 2005 (9.x) oder höher verwendet. Wenn der Abonnent SQL Server 7.0 oder Microsoft SQL Server 2000 (8.x) ist, werden Statistiken nur vom Verleger und Verteiler erfasst.

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

  • Abonnements müssen aktiv sein, um ein Tracer-Token zu erhalten. Ein Abonnement ist aktiv, wenn es initialisiert wurde.

  • Durch die Neuinitialisierung werden alle ausstehenden Tracer-Token für die relevanten Abonnements entfernt.

  • Abonnenten erhalten nur Tracertoken, die nach ihrer ersten Synchronisierung erstellt wurden.

  • Tracer-Token werden von neu veröffentlichenden Abonnenten nicht weitergeleitet.

  • Der Replikationsmonitor kann den Namen der Veröffentlichungsinstanz von SQL 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 Server an. Nach einem Failover kann über den Replikationsmonitor kein Überwachungstoken eingegeben werden. Ein jedoch auf dem neuen Verleger mit Transact-SQL eingegebenes Überwachungstoken wird im Replikationsmonitor angezeigt.

Verwenden von SQL Server-Replikationsmonitor

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

Ein Tracer-Token einfügen und Informationen über das Token anzeigen

  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 Tracer-Token.

  3. Klicken Sie auf Tracer 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.

Informationen zu einem zuvor eingefügten Tracer-Token anzeigen

  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 Tracer-Token.

  3. Wählen Sie eine Uhrzeit aus der Dropdown-Liste Zeit eingefügt 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

    Informationen zu Tracer-Token werden für denselben Zeitraum wie andere Verlaufsdaten aufbewahrt; dieser wird durch den Aufbewahrungszeitraum des Verlaufs der Verteilungsdatenbank bestimmt. Weitere Informationen zum Ändern der Eigenschaften der Verteilungsdatenbank finden Sie unter Anzeigen und Ändern der Verteiler- und Verlegereigenschaften.

Verwenden von Transact-SQL

So veröffentlichen Sie ein Tracertoken in einer Transaktionsveröffentlichung

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

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

  3. Führen Sie beim Verleger in der Veröffentlichungsdatenbank sp_posttracertoken (Transact-SQL) aus, und geben Sie dabei @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. Übermitteln Sie mithilfe des vorherigen Verfahrens ein Tracer-Token an die Veröffentlichung.

  2. Führen Sie beim Publisher in der Veröffentlichungsdatenbank sp_helptracertokens (Transact-SQL) aus, wobei Sie @publication angeben. Dies gibt eine Liste aller an die Veröffentlichung übermittelten Tracer-Token zurück. Beachten Sie die gewünschte tracer_id im Resultset.

  3. Führen Sie beim Verleger in der Veröffentlichungsdatenbank sp_helptracertokenhistory (Transact-SQL) aus, und geben Sie dabei @publication sowie die TracerToken-ID aus Schritt 2 für @tracer_id an. Dadurch werden Latenzzeitinformationen für das ausgewählte Überwachungstoken zurückgegeben.

So entfernen Sie Tracing-Token

  1. Führen Sie beim Publisher in der Veröffentlichungsdatenbank sp_helptracertokens (Transact-SQL) aus, wobei Sie @publication angeben. Dies gibt eine Liste aller an die Veröffentlichung übermittelten Tracer-Token zurück. Beachten Sie im Resultset die tracer_id des zu löschenden Tracer-Tokens.

  2. Führen Sie beim Verleger in der Veröffentlichungsdatenbank sp_deletetracertokenhistory (Transact-SQL) aus, und geben Sie dabei @publication und für @tracer_id die ID des in Schritt 2 zu löschenden Tracertokens an.

Beispiel (Transact-SQL)

In diesem Beispiel wird ein Tracer-Token-Datensatz erstellt, und die zurückgegebene ID des erstellten Tracer-Tokens wird verwendet, um Latenzinformationen anzuzeigen.

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 veröffentlichen Sie ein Tracertoken in einer Transaktionsveröffentlichung

  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 Nachverfolgungstoken in das Transaktionsprotokoll der Publikation 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. Geben Sie für ein Tracer-Token aus Schritt 5 den Wert TracerTokenId an. Dadurch werden Latenzzeitinformationen für das ausgewählte Überwachungstoken als DataSet -Objekt zurückgegeben. Wenn alle Informationen zum Tracer Token zurückgegeben werden, bestehen sowohl die Verbindung zwischen Publisher und Distributor als auch die Verbindung zwischen Distributor und Subscriber, und die Replikationstopologie funktioniert ordnungsgemäß.

So entfernen Sie Tracing-Token

  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:

    • Das TracerTokenId für ein Tracer-Token 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.