Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa
Darmowa diagnoza laptopa
Dojazd do klienta bezpłatnie
Dojazd do klienta bezpłatnie
Laptopy zastępcze bezpłatnie
Laptopy zastępcze bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie

SYS.DM_HADR_DATABASE_REPLICA_STATES

Termin Definicja
SYS.DM_HADR_DATABASE_REPLICA_STATES

sys.dm_hadr_database_replica_states pokazuje stan synchronizacji poszczególnych baz w grupie dostępności.

Rola DMV w grupie dostępności Always On

sys.dm_hadr_database_replica_states jest funkcją dynamicznego zarządzania w Microsoft SQL Server. Służy do odczytywania stanu baz danych należących do grup dostępności Always On Availability Groups. Wyniki opisują osobno stan bazy na danej replice, dlatego jedna baza logiczna może pojawić się w kilku wierszach, jeżeli jest utrzymywana na replice podstawowej i na replikach pomocniczych.

Widok nie pokazuje ogólnej kondycji całej instancji SQL Server ani stanu usługi systemu Windows. Dostarcza informacji dotyczących konkretnej bazy, jej repliki oraz przepływu rekordów dziennika transakcji pomiędzy replikami. Na replice podstawowej wynik może obejmować informacje o bazach podstawowych i pomocniczych grupy dostępności. Na replice pomocniczej można odczytać przede wszystkim stan lokalnej kopii bazy. Zakres widocznych danych zależy również od roli repliki i uprawnień konta wykonującego zapytanie.

Kolumny opisujące synchronizację i kondycję

Najczęściej analizowane kolumny to database_id, group_database_id, replica_id, group_id oraz is_local. database_id identyfikuje bazę w bieżącej instancji, natomiast group_database_id pozwala rozpoznać tę samą bazę w kontekście grupy dostępności. replica_id i group_id wskazują odpowiednio replikę oraz grupę, a is_local informuje, czy dany wiersz dotyczy repliki lokalnej dla instancji, na której wykonano zapytanie.

Stan synchronizacji przedstawiają pola synchronization_state i synchronization_state_desc. Wartość opisowa może wskazywać między innymi stan NOT SYNCHRONIZING, PARTIALLY SYNCHRONIZED albo SYNCHRONIZED. Sama wartość SYNCHRONIZED oznacza, że kopia osiągnęła wymagany stan synchronizacji dla używanego trybu, ale nie jest równoznaczna z brakiem wszystkich opóźnień chwilowych. Do oceny kondycji służą także synchronization_health i synchronization_health_desc, które wskazują, czy synchronizacja jest zdrowa, częściowo zdrowa albo niezdrowa.

Pola database_state_desc, is_suspended, suspend_reason i suspend_reason_desc pomagają rozróżnić problem synchronizacji od problemu samej bazy. Zawieszenie przepływu danych może mieć inną przyczynę niż awaria połączenia lub pełne zatrzymanie procesu kopiowania. Interpretacja powinna uwzględniać również rolę bazy, tryb dostępności oraz stan odpowiedniej repliki, ponieważ identyczna wartość w pojedynczej kolumnie nie zawsze oznacza tę samą sytuację operacyjną.

Kolejki dziennika, redo i opóźnienie repliki

DMV udostępnia także liczniki związane z przesyłaniem i odtwarzaniem dziennika transakcji. log_send_queue_size określa ilość danych dziennika oczekujących na wysłanie z repliki podstawowej do repliki pomocniczej, a log_send_rate pokazuje tempo wysyłania. Po stronie repliki pomocniczej istotne jest redo_queue_size, czyli ilość dziennika oczekującego na odtworzenie w bazie pomocniczej, oraz redo_rate, czyli tempo tego odtwarzania. Rosnąca kolejka wysyłania może wskazywać problem z generowaniem, transportem lub odbiorem logu, natomiast rosnąca kolejka redo może oznaczać, że replika otrzymuje dane szybciej, niż potrafi je zastosować.

Do ustalenia, kiedy poszczególne fragmenty logu zostały wysłane, odebrane, utrwalone i odtworzone, służą między innymi pola last_sent_lsn, last_sent_time, last_received_lsn, last_received_time, last_hardened_lsn, last_hardened_time, last_redone_lsn i last_redone_time. LSN, czyli Log Sequence Number, jest numerem sekwencyjnym wpisu lub zakresu wpisów dziennika transakcji. Porównanie tych wartości pomaga określić, na którym etapie powstaje opóźnienie: wysyłania, odbioru, utrwalania na dysku czy odtwarzania w bazie pomocniczej.

Przykładowe zapytanie diagnostyczne może zwrócić najważniejsze pola bez pobierania całego zestawu kolumn:

SELECT
    database_id,
    group_database_id,
    replica_id,
    is_local,
    synchronization_state_desc,
    synchronization_health_desc,
    database_state_desc,
    is_suspended,
    suspend_reason_desc,
    log_send_queue_size,
    redo_queue_size,
    log_send_rate,
    redo_rate
FROM sys.dm_hadr_database_replica_states;

Weryfikacja problemu w środowisku SQL Server

Wartość z tej DMV należy porównywać w czasie, a nie traktować pojedynczego odczytu jako pełnej diagnozy. Jednorazowo duża kolejka może wynikać z krótkiego skoku aktywności transakcyjnej, lecz kolejka rosnąca w kolejnych pomiarach wskazuje na trwałą różnicę pomiędzy tempem generowania, przesyłania lub odtwarzania logu. Analizę należy zestawić ze stanem punktów końcowych Always On, rolą repliki, trybem synchronizacji oraz informacjami z dziennika SQL Server.

Jeżeli is_suspended ma wartość wskazującą zawieszenie, najpierw trzeba odczytać suspend_reason_desc i ustalić, czy problem dotyczy transportu, odtwarzania, dostępności pliku, błędu dysku lub innego warunku silnika. Sama DMV nie naprawia replikacji i nie wznawia automatycznie wszystkich zatrzymanych operacji. Przed wykonaniem działań administracyjnych należy potwierdzić stan bazy, dostępność plików danych i logu, wolne miejsce oraz komunikaty błędów związane z konkretną bazą i repliką.

Jest to funkcja przeznaczona dla diagnostyki administracyjnej SQL Server, a nie dla zwykłych ustawień systemu Windows. Do jej odczytu wymagane są odpowiednie uprawnienia serwerowe; w zależności od wersji SQL Server dokumentacja może wskazywać między innymi VIEW SERVER STATE albo, w nowszych wersjach, uprawnienie związane z odczytem stanu wydajności serwera. W przypadku laptopa lub komputera używanego jako stacja robocza problem z tą DMV zwykle wynika z połączenia z konkretną instancją SQL Server, braku uprawnień albo błędnej konfiguracji grupy dostępności, a nie z awarii samego sprzętu.

+48 22 100 48 29Zadzwoń teraz · serwisant w 1 godzinę