Freigeben über


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

In diesem Thema wird beschrieben, wie die Latenzzeit gemessen wird und Verbindungen für Transaktionsreplikation in SQL Server 2012 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 kleine Datenmenge) wird in das Transaktionsprotokoll der Veröffentlichungsdatenbank geschrieben. Es wird hervorgehoben, als handele es sich um eine typische replizierte Transaktion, und durch das System gesendet, um Folgendes zu berechnen:

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

  • Welche Abonnenten, die das Überwachungstoken empfangen sollten, haben keines empfangen?

In diesem Thema

  • Vorbereitungen:

    Einschränkungen

  • So messen Sie die Latenzzeit und überprüfen die Verbindungen mit:

    SQL Server-Replikationsmonitor

    Transact-SQL

    Replikationsverwaltungsobjekte (RMO)

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 aufweisen, oder es muss sich um einen Oracle-Verleger handeln.

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

  • Im Fall von Pullabonnements werden Überwachungstokenstatistiken von Abonnenten gesammelt, sofern der Abonnent SQL Server 2005 oder höher aufweist. Falls der Abonnent SQL Server 7.0 oder Microsoft SQL Server 2000 aufweist, werden Statistiken nur vom Verleger und vom Verteiler gesammelt.

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

Pfeilsymbol, dass mit dem Link "Zurück zum Anfang" verwendet wird[Top]

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 Sie 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. Ein Wert Ausstehend gibt an, 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. Ein Wert Ausstehend gibt an, dass das Token noch nicht den Bestimmungspunkt erreicht hat.

    HinweisHinweis

    Informationen des Überwachungstokens werden genauso lange beibehalten wie andere Vergangenheitsdaten. Diese Zeitspanne richtet sich nach der für den Verlauf in der Verteilungsdatenbank angegebenen Beibehaltungsdauer. Informationen zum Ändern von Eigenschaften der Verteilungsdatenbank finden Sie unter Anzeigen und Ändern der Verteiler- und Verlegereigenschaften.

Pfeilsymbol, dass mit dem Link "Zurück zum Anfang" verwendet wird[Top]

Verwendung von Transact-SQL

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

  1. (Optional) Führen Sie beim Verleger für die 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 für die Veröffentlichungsdatenbank sp_helpsubscription (Transact-SQL) aus. Stellen Sie sicher, dass das Abonnement vorhanden und der Status aktiv ist.

  3. Führen Sie sp_posttracertoken (Transact-SQL) auf dem Verleger für die Veröffentlichungsdatenbank unter Angabe von @publication aus. 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 sp_helptracertokens (Transact-SQL) auf dem Verleger für die Veröffentlichungsdatenbank unter Angabe von @publication aus. 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 sp_helptracertokenhistory (Transact-SQL) auf dem Verleger für die Veröffentlichungsdatenbank unter Angabe von @publication und der Überwachungstoken-ID aus Schritt 2 für @tracer_id aus. Dadurch werden Latenzzeitinformationen für das ausgewählte Überwachungstoken zurückgegeben.

So entfernen Sie Überwachungstoken

  1. Führen Sie sp_helptracertokens (Transact-SQL) auf dem Verleger für die Veröffentlichungsdatenbank unter Angabe von @publication aus. 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 sp_deletetracertokenhistory (Transact-SQL) beim Verleger für die Veröffentlichungsdatenbank unter Angabe von @publication und der ID des zu löschenden Überwachungstokens aus Schritt 2 für @tracer_id aus.

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

Pfeilsymbol, dass mit dem Link "Zurück zum Anfang" verwendet wird[Top]

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, PublisherName und 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, PublisherName und 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.

Pfeilsymbol, dass mit dem Link "Zurück zum Anfang" verwendet wird[Top]