Messen der Latenzzeit und Überprüfen der Verbindungen bei Transaktionsreplikationen
Gilt für: SQL Server Azure 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 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:
So messen Sie die Latenzzeit und überprüfen die Verbindungen mit:
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 (9.x) oder eine höhere Version sein.
Der Verleger muss SQL Server 2005 (9.x) oder höhere Version sein, oder es muss sich um einen Oracle-Verleger handeln.
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.
Im Fall von Pullabonnements werden Überwachungstokenstatistiken von Abonnenten nur dann gesammelt, wenn der Abonnent SQL Server 2005 (9.x) oder eine höhere Version hat. 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 Ü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.
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
Erweitern Sie im linken Bereich eine Verlegergruppe, erweitern Sie einen Verleger, und klicken Sie dann auf eine Veröffentlichung.
Klicken Sie auf die Registerkarte Überwachungstoken .
Klicken Sie auf Überwachung einfügen.
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
Erweitern Sie im linken Bereich eine Verlegergruppe, erweitern Sie einen Verleger, und klicken Sie dann auf eine Veröffentlichung.
Klicken Sie auf die Registerkarte Überwachungstoken .
Wählen Sie in der Dropdownliste Einfügungszeitpunkt eine Zeit aus.
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
(Optional) Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_helppublication (Transact-SQL) aus. Stellen Sie sicher, dass die Veröffentlichung vorhanden und der Status aktiv ist.
(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.
Führen Sie auf dem Verleger für die 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
Stellen Sie mithilfe der vorherigen Prozedur ein Überwachungstoken für die Veröffentlichung bereit.
Führen Sie auf dem Verleger für die 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.
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. Dadurch werden Latenzzeitinformationen für das ausgewählte Überwachungstoken zurückgegeben.
So entfernen Sie Überwachungstoken
Führen Sie auf dem Verleger für die 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.
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.
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
Erstellen Sie eine Verbindung mit dem Verleger, indem Sie die ServerConnection -Klasse verwenden.
Erstellen Sie eine Instanz der TransPublication-Klasse.
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.
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.
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
Erstellen Sie eine Verbindung mit dem Verteiler, indem Sie die ServerConnection -Klasse verwenden.
Erstellen Sie eine Instanz der PublicationMonitor-Klasse.
Legen Sie die Eigenschaften Name, DistributionDBName, PublisherNameund PublicationDBName fest, und legen Sie die ConnectionContext -Eigenschaft auf die in Schritt 1 erstellte Verbindung fest.
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.
Rufen Sie die EnumTracerTokens-Methode auf. Wandeln Sie das zurückgegebene ArrayList -Objekt in ein Array von TracerToken -Objekten um.
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
Erstellen Sie eine Verbindung mit dem Verteiler, indem Sie die ServerConnection -Klasse verwenden.
Erstellen Sie eine Instanz der PublicationMonitor-Klasse.
Legen Sie die Eigenschaften Name, DistributionDBName, PublisherNameund PublicationDBName fest, und legen Sie die ConnectionContext -Eigenschaft auf die in Schritt 1 erstellte Verbindung fest.
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.
Rufen Sie die EnumTracerTokens-Methode auf. Wandeln Sie das zurückgegebene ArrayList -Objekt in ein Array von TracerToken -Objekten um.
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.