Mät latens och validera anslutningar för transaktionell replikering

gäller för:SQL ServerAzure SQL Managed Instance

Detta ämne beskriver hur man mäter latens och validerar anslutningar för transaktionell replikering i SQL Server genom att använda Replication Monitor, Transact-SQL eller Replication Management Objects (RMO). Transaktionell replikering tillhandahåller tracer-tokenfunktionen, som ger ett bekvämt sätt att mäta latens i transaktionella replikationstopologier och validera kopplingarna mellan Publisher, Distributor och Abonnenter. En token (en liten mängd data) skrivs till transaktionsloggen i publiceringsdatabasen, markeras som om det vore en typisk replikerad transaktion, och skickas genom systemet, vilket möjliggör en beräkning av:

  • Hur lång tid går mellan att en transaktion genomförs hos Publisher och att motsvarande kommando infogas i distributionsdatabasen hos distributören.

  • Hur lång tid går mellan att ett kommando infogas i distributionsdatabasen och att motsvarande transaktion genomförs hos en prenumerant.

Utifrån dessa beräkningar kan du svara på ett antal frågor, inklusive:

  • Vilka prenumeranter tar längst tid på sig att få en ändring från Publisher?

  • Av prenumeranter som förväntas få spårningstoken, vilken, om några, inte har fått den?

Begränsningar och restriktioner

Spårningstoken kan också vara användbara när ett system försätts i ett vilande tillstånd, vilket innebär att all aktivitet stoppas och att man verifierar att alla noder har tagit emot alla utestående ändringar. Mer information finns i Quiesce a Replication Topology (Replication Transact-SQL Programming).

För att använda tracer-tokens måste du använda vissa versioner av Microsoft SQL Server:

  • Distributören måste vara Microsoft SQL Server 2005 (9.x) eller senare.

  • Publisher måste vara SQL Server 2005 (9.x) eller senare eller vara en Oracle Publisher.

  • För push-prenumerationer samlas tracer-tokenstatistik in från Publisher, Distributor och Prenumeranter om prenumeranten är Microsoft SQL Server 7.0 eller senare.

  • För pull-prenumerationer samlas tracer-tokenstatistik in från prenumeranter endast om prenumeranten är SQL Server 2005 (9.x) eller senare. Om prenumeranten är SQL Server 7.0 eller Microsoft SQL Server 2000 (8.x) samlas statistik endast in från Publisher och Distributor.

Det finns också ett antal andra frågor och begränsningar att vara medveten om:

  • Prenumerationer måste vara aktiva för att ta emot en spårningstoken. En prenumeration är aktiv om den har initierats.

  • Ominitiering tar bort alla väntande tracer-tokens för relevanta prenumerationer.

  • Prenumeranter får endast spårningstokens som skapats efter deras initiala synkronisering.

  • Spårningstoken vidarebefordras inte av prenumeranter som återpublicerar.

  • Efter failover till en sekundär kan Replication Monitor inte ändra namnet på publiceringsinstansen för SQL Server och kommer att fortsätta visa replikeringsinformation under namnet på den ursprungliga primära instansen av SQL Server. Efter failover kan en spårningstoken inte matas in med Replication Monitor, men en tracertoken som matats in hos den nya utgivaren med Transact-SQL är synlig i Replication Monitor.

Användning av SQL Server Replication Monitor

Information om hur du startar Replikeringsövervakaren finns i Starta replikeringsövervakaren.

För att infoga en spårningstoken och se information om tokenen

  1. Expandera en Publisher-grupp i vänstra rutan, öppna en Publisher och klicka sedan på en publikation.

  2. Klicka på fliken Tracer Tokens .

  3. Klicka på Infoga spårare.

  4. Visa förfluten tid för spårningstoken i följande kolumner: Utgivare till distributör, Distributör till prenumerant, Total svarstid. Ett värde på Pending indikerar att token inte har nått en given punkt.

För att se information på en spårningstoken som tidigare lagts in

  1. Expandera en Publisher-grupp i vänstra rutan, öppna en Publisher och klicka sedan på en publikation.

  2. Klicka på fliken Tracer Tokens .

  3. Välj en tid i listrutan Tid införd.

  4. Visa förfluten tid för spårningstoken i följande kolumner: Utgivare till distributör, Distributör till prenumerant, Total svarstid. Ett värde på Pending indikerar att token inte har nått en given punkt.

    Anmärkning

    Tracer-tokeninformation sparas under samma tidsperiod som annan historisk data, vilket styrs av historikens lagringstid för distributionsdatabasen. För information om att ändra egenskaper i distributionsdatabaser, se Visa och ändra distributör och Publisher Properties.

Använda Transact-SQL

Att posta en tracer-token till en transaktionell publikation

  1. (Valfritt) På Publisher i publikationsdatabasen kör du sp_helppublication (Transact-SQL). Verifiera att publikationen existerar och att statusen är aktiv.

  2. (Valfritt) Hos utgivaren i publiceringsdatabasen kör du sp_helpsubscription (Transact-SQL). Verifiera att prenumerationen finns och att statusen är aktiv.

  3. Vid Publisher i publikationsdatabasen, kör sp_posttracertoken (Transact-SQL), som specificerar @publication. Notera värdet på @tracer_token_id utgångsparameter.

Att fastställa latens och validera anslutningar för en transaktionell publikation

  1. Publicera en spårningstoken i publikationen med hjälp av föregående procedur.

  2. Vid Publisher i publiceringsdatabasen, kör sp_helptracertokens (Transact-SQL), som specificerar @publication. Detta returnerar en lista över alla spårningstokens som publicerats i publikationen. Notera önskad tracer_id i resultatuppsättningen.

  3. På Publisher i publiceringsdatabasen, kör sp_helptracertokenhistory (Transact-SQL), där @publication och spårningstoken-ID från steg 2 för @tracer_id specificeras. Detta returnerar latensinformation för den valda spårningstokenen.

För att ta bort spårningstokens

  1. Vid Publisher i publiceringsdatabasen, kör sp_helptracertokens (Transact-SQL), som specificerar @publication. Detta returnerar en lista över alla spårningstokens som publicerats i publikationen. Observera tracer_id för att tracer-token ska tas bort i resultatuppsättningen.

  2. På utgivaren i publikationsdatabasen kör du sp_deletetracertokenhistory (Transact-SQL) och anger @publication samt ID:t för den spårare som ska tas bort från steg 2 för @tracer_id.

Exempel (Transact-SQL)

Detta exempel skickar en tracer-tokenpost och använder det returnerade ID:t för den skickade tracer-tokenposten för att visa latensinformation.

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

Använda replikeringshanteringsobjekt (RMO)

Att posta en tracer-token till en transaktionell publikation

  1. Skapa en anslutning till Publisher med hjälp av klassen ServerConnection.

  2. Skapa en instans av TransPublication klassen.

  3. Ställ in egenskaperna Name och DatabaseName för publikationen och ställ in egenskapen ConnectionContext till den anslutning som skapades i steg 1.

  4. Anropa metoden LoadProperties för att hämta objektets egenskaper. Om denna metod ger falskt, har antingen publiceringsegenskaperna i steg 3 definierats felaktigt eller så existerar publikationen inte.

  5. Anropa PostTracerToken metoden. Denna metod infogar en spårningstoken i publikationens transaktionslogg.

Att fastställa latens och validera anslutningar för en transaktionell publikation

  1. Skapa en anslutning till distributören med hjälp av klassen ServerConnection.

  2. Skapa en instans av PublicationMonitor klassen.

  3. Ställ in Name, DistributionDBName, PublisherName, och PublicationDBName egenskaperna, och sätt egenskapen ConnectionContext till anslutningen som skapats i steg 1.

  4. Anropa metoden LoadProperties för att hämta objektets egenskaper. Om denna metod ger falskt har antingen publiceringsmonitorns egenskaper i steg 3 definierats felaktigt eller så existerar publikationen inte.

  5. Anropa EnumTracerTokens metoden. Kasta det returnerade ArrayList objektet till en array av TracerToken objekt.

  6. Anropa EnumTracerTokenHistory metoden. Skicka värdet TracerTokenId som en spårningstoken från steg 5. Detta returnerar latensinformation för den valda spårningstoken som ett DataSet objekt. Om all tracer-tokeninformation returneras finns både kopplingen mellan Publisher och Distributor samt kopplingen mellan Distributor och Abonnenten och replikationstopologin fungerar.

För att ta bort spårningstokens

  1. Skapa en anslutning till distributören med hjälp av klassen ServerConnection.

  2. Skapa en instans av PublicationMonitor klassen.

  3. Ställ in Name, DistributionDBName, PublisherName, och PublicationDBName egenskaperna, och sätt egenskapen ConnectionContext till anslutningen som skapats i steg 1.

  4. Anropa metoden LoadProperties för att hämta objektets egenskaper. Om denna metod ger falskt har antingen publiceringsmonitorns egenskaper i steg 3 definierats felaktigt eller så existerar publikationen inte.

  5. Anropa EnumTracerTokens metoden. Kasta det returnerade ArrayList objektet till en array av TracerToken objekt.

  6. Anropa CleanUpTracerTokenHistory metoden. Passa ett av följande värden:

    • TracerTokenId för en spårningstoken från steg 5. Detta raderar information för en vald token.

    • Ett DateTime objekt. Detta raderar information för alla tokens som är äldre än angivet datum och tid.