Share via


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

In diesem Thema wird beschrieben, wie Sie die Latenz messen und Verbindungen für die Transaktionsreplikation in SQL Server 2014 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).

Für die Verwendung von Überwachungstoken müssen Sie bestimmte Versionen von Microsoft SQL Server verwenden:

  • Der Verteiler muss Microsoft SQL Server 2005 oder höher sein.

  • Der Verleger muss SQL Server 2005 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 höher aufweist.

  • Bei Pullabonnements werden Tracertokenstatistiken nur von Abonnenten erfasst, wenn der Abonnent SQL Server 2005 oder höher ist. Wenn der Abonnent SQL Server 7.0 oder Microsoft SQL Server 2000 ist, werden Statistiken nur vom Herausgeber und Verteiler 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.

  • 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 Serveran. 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 auf dem 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 auf dem Verleger 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 auf dem Verleger in der Veröffentlichungsdatenbank 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 auf dem Verleger in der Veröffentlichungsdatenbank 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 auf dem Verleger in der Veröffentlichungsdatenbank 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 auf dem Verleger in der Veröffentlichungsdatenbank 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 auf dem Verleger in der Veröffentlichungsdatenbank sp_deletetracertokenhistory (Transact-SQL) aus, und geben Sie @publication und die ID des Ablaufverfolgungsvorgangs an, der aus Schritt 2 für @tracer_id gelöscht werden 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 [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)

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 false zurü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 false zurü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 false zurü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.