Mierz opóźnienie i weryfikuj połączenia dla replikacji transakcyjnej

Dotyczy:SQL ServerAzure SQL Managed Instance

Ten temat opisuje, jak mierzyć opóźnienia i weryfikować połączenia dla replikacji transakcyjnej w SQL Server za pomocą Monitora Replikacji, Transact-SQL lub Obiektów Zarządzania Replikacją (RMO). Replikacja transakcyjna zapewnia funkcję tokena tracera, która umożliwia wygodne mierzenie opóźnień w topologiach replikacji transakcyjnych oraz weryfikację powiązań między Publisher, Distributorem a Subskrybentami. Token (niewielka ilość danych) jest zapisywany do dziennika transakcji bazy publikacji, oznaczany jak typowa replikowana transakcja i przesyłany przez system, umożliwiając obliczenie:

  • Ile czasu mija od momentu dokonania transakcji w Publisher do wstawienia odpowiedniego polecenia do bazy dystrybucji u Dystrybutora?

  • Ile czasu upływa od wstawienia polecenia do bazy dystrybucji do dokonania odpowiadającej mu transakcji u abonenta.

Na podstawie tych obliczeń możesz odpowiedzieć na szereg pytań, w tym:

  • Którzy subskrybaci najdłużej potrzebują otrzymania zmiany od Publisher?

  • Którzy spośród subskrybentów, którzy mieli otrzymać token śledzący, jeśli tacy są, nie otrzymali go?

Ograniczenia i ograniczenia

Tokeny tracerów mogą być również przydatne podczas zatrzymywania systemu, co polega na zatrzymaniu wszelkiej aktywności i weryfikacji, że wszystkie węzły otrzymały wszystkie zaległe zmiany. Aby uzyskać więcej informacji, zobacz Quiesce a Replication Topology (Replication Transact-SQL Programming).

Aby używać tokenów tracerowych, musisz użyć określonych wersji Microsoft SQL Server:

  • Dystrybutor musi być serwerem Microsoft SQL Server 2005 (9.x) lub nowszym.

  • Publisher musi mieć SQL Server 2005 (9.x) lub nowszy albo być Oracle Publisher.

  • W przypadku subskrypcji push statystyki tokenów tracerów są zbierane od Publisher, Distributora i Subskrybentów, jeśli subskrybentem jest Microsoft SQL Server 7.0 lub nowszy.

  • W przypadku subskrypcji pull statystyki tokenów tracerów są zbierane od subskrybentów tylko wtedy, gdy subskrybent to SQL Server 2005 (9.x) lub nowszy. Jeśli subskrybentem jest SQL Server 7.0 lub Microsoft SQL Server 2000 (8.x), statystyki są zbierane wyłącznie od Publisher and Distributor.

Istnieje także szereg innych kwestii i ograniczeń, na które należy zwrócić uwagę:

  • Aby otrzymać token śledzenia, subskrypcje muszą być aktywne. Subskrypcja jest aktywna, jeśli została zainicjalizowana.

  • Ponowna inicjalizacja usuwa wszelkie oczekujące tokeny tracer dla powiązanych subskrypcji.

  • Subskrybujący otrzymują tylko tokeny tracerów utworzone po ich początkowej synchronizacji.

  • Tokeny śledzenia nie są przekazywane przez subskrybentów publikujących dalej.

  • Po przejściu na awaryjne urządzenie pomocnicze, Monitor replikacji nie jest w stanie zmienić nazwy instancji publikującej SQL Server i nadal wyświetla informacje o replikacji pod nazwą oryginalnej głównej instancji SQL Server. Po przełączeniu awaryjnym nie można wprowadzić tokenu śledzenia przy użyciu Monitora replikacji, jednak token śledzenia wprowadzony u nowego wydawcy za pomocą Transact-SQL jest widoczny w Monitorze replikacji.

Korzystanie z monitora replikacji SQL Server

Aby uzyskać informacje na temat uruchamiania monitora replikacji, zobacz Uruchamianie monitora replikacji.

Aby włożyć token śledzący i wyświetlić informacje o tokenie

  1. Rozwiń grupę wydawców w lewym okienku, rozwiń wydawcę, a następnie kliknij publikację.

  2. Kliknij zakładkę Tracer Tokens .

  3. Kliknij przycisk Insert Tracer.

  4. Wyświetl czas, który upłynął dla tokenu śledzenia w następujących kolumnach: Publisher to Distributor, Distributor to Subscriber, Total Latency (Łączne opóźnienie). Wartość Pending oznacza, że token nie osiągnął jeszcze określonego punktu.

Aby wyświetlić informacje o wcześniej wstawionym tokenie śledzącym

  1. Rozwiń grupę wydawców w lewym okienku, rozwiń wydawcę, a następnie kliknij publikację.

  2. Kliknij zakładkę Tracer Tokens .

  3. Wybierz czas z listy rozwijanej Wstawiony czas.

  4. Wyświetl czas, który upłynął dla tokenu śledzenia w następujących kolumnach: Publisher to Distributor, Distributor to Subscriber, Total Latency (Łączne opóźnienie). Wartość Pending oznacza, że token nie osiągnął jeszcze określonego punktu.

    Uwaga / Notatka

    Informacje o tokenach śledzących są przechowywane przez ten sam okres co inne dane historyczne, który jest regulowany przez okres przechowywania historii bazy danych dystrybucji. Aby uzyskać informacje o zmianie właściwości bazy danych dystrybucji, zobacz Zobacz i zmodyfikuj właściwości dystrybutora oraz Publisher.

Korzystanie z Transact-SQL

Opublikowanie tokenu śledzenia w publikacji transakcyjnej

  1. (Opcjonalnie) U wydawcy w bazie danych publikacji wykonaj sp_helppublication (Transact-SQL). Sprawdź, czy publikacja istnieje i czy status jest aktywny.

  2. (Opcjonalnie) Na serwerze Publikującym, w bazie danych publikacji, wykonaj sp_helpsubscription (Transact-SQL). Sprawdź, czy subskrypcja istnieje i czy status jest aktywny.

  3. Na Publisher w bazie publikacji wykonaj sp_posttracertoken (Transact-SQL), określając @publication. Zwróć uwagę na wartość parametru wyjściowego @tracer_token_id .

Określenie opóźnień i weryfikacja połączeń dla publikacji transakcyjnej

  1. Umieść token śledzący w publikacji, stosując poprzednią procedurę.

  2. Na serwerze Publisher, w bazie danych publikacji, wykonaj sp_helptracertokens (Transact-SQL), określając @publication. To zwraca listę wszystkich tokenów śledzących zamieszczonych w publikacji. Zwróć uwagę na wymagany tracer_id w zbiorze wyników.

  3. Na serwerze Publisher w bazie danych publikacji wykonaj sp_helptracertokenhistory (Transact-SQL), określając @publication oraz identyfikator tokenu śledzącego z kroku 2 dla @tracer_id. To zwraca informacje o opóźnieniu dla wybranego tokena śledzącego.

Usunąć tokeny śledzenia

  1. Na serwerze Publisher, w bazie danych publikacji, wykonaj sp_helptracertokens (Transact-SQL), określając @publication. To zwraca listę wszystkich tokenów śledzących zamieszczonych w publikacji. Zanotuj tracer_id tokena śledzenia przeznaczonego do usunięcia w zbiorze wyników.

  2. Na serwerze Publisher, w bazie danych publikacji, wykonaj polecenie sp_deletetracertokenhistory (Transact-SQL), określając parametr @publication oraz identyfikator znacznika śledzenia do usunięcia z kroku 2 dla elementu @tracer_id.

Przykład (Transact-SQL)

Ten przykład publikuje rekord tokena tracera i wykorzystuje zwrócony identyfikator tego tokena do przeglądania informacji o opóźnieniach.

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

Korzystanie z obiektów zarządzania replikacją (RMO)

Opublikowanie tokenu śledzenia w publikacji transakcyjnej

  1. Utwórz połączenie z programem Publisher przy użyciu klasy ServerConnection.

  2. Utwórz wystąpienie klasy TransPublication.

  3. Ustaw dla publikacji właściwości Name i DatabaseName, a właściwość ConnectionContext ustaw na połączenie utworzone w kroku 1.

  4. Wywołaj metodę LoadProperties, aby uzyskać właściwości obiektu. Jeśli ta metoda zwraca false, albo właściwości publikacji w kroku 3 zostały błędnie zdefiniowane, albo publikacja nie istnieje.

  5. Wywołaj metodę PostTracerToken . Ta metoda wstawia token tracera do dziennika transakcji publikacji.

Określenie opóźnień i weryfikacja połączeń dla publikacji transakcyjnej

  1. Utwórz połączenie z dystrybutorem przy użyciu klasy ServerConnection.

  2. Utwórz wystąpienie klasy PublicationMonitor.

  3. Ustaw Name, DistributionDBName, PublisherName, i PublicationDBName właściwości, a właściwość ConnectionContext ustaw na połączenie utworzone w kroku 1.

  4. Wywołaj metodę LoadProperties, aby uzyskać właściwości obiektu. Jeśli ta metoda zwraca false, to albo właściwości monitorowania publikacji w kroku 3 zostały zdefiniowane nieprawidłowo, albo publikacja nie istnieje.

  5. Wywołaj metodę EnumTracerTokens . Rzutuj zwrócony obiekt ArrayList na tablicę obiektów TracerToken.

  6. Wywołaj metodę EnumTracerTokenHistory . Przekaż wartość TracerTokenId jako token śledzenia z kroku 5. Zwraca to informacje o opóźnieniu wybranego tokena tracera jako obiektu DataSet . Jeśli zostaną zwrócone wszystkie informacje o tokenie śledzenia, istnieje zarówno połączenie między Publikatorem a Dystrybutorem, jak i połączenie między Dystrybutorem a Subskrybentem, a topologia replikacji działa.

Usunąć tokeny śledzenia

  1. Utwórz połączenie z dystrybutorem przy użyciu klasy ServerConnection.

  2. Utwórz wystąpienie klasy PublicationMonitor.

  3. Ustaw Name, DistributionDBName, PublisherName, i PublicationDBName właściwości, a właściwość ConnectionContext ustaw na połączenie utworzone w kroku 1.

  4. Wywołaj metodę LoadProperties, aby uzyskać właściwości obiektu. Jeśli ta metoda zwraca false, to albo właściwości monitorowania publikacji w kroku 3 zostały zdefiniowane nieprawidłowo, albo publikacja nie istnieje.

  5. Wywołaj metodę EnumTracerTokens . Rzutuj zwrócony obiekt ArrayList na tablicę obiektów TracerToken.

  6. Wywołaj metodę CleanUpTracerTokenHistory . Przekrocz jedną z następujących wartości:

    • To TracerTokenId dla tokenu śledzenia z kroku 5. Usuwa to informacje o wybranym tokenie.

    • Obiekt DateTime. Usuwa to informacje o wszystkich tokenach starszych niż podana data i godzina.