Udostępnij za pośrednictwem


sys.dm_hadr_database_replica_states (Transact-SQL)

Dotyczy:programu SQL ServerAzure SQL Managed Instance

Zwraca wiersz dla każdej bazy danych, która uczestniczy w zawsze włączonej grupie dostępności, dla której lokalne wystąpienie programu SQL Server hostuje replikę dostępności. Ten dynamiczny widok zarządzania udostępnia informacje o stanie zarówno replik podstawowych, jak i pomocniczych. W repliki pomocniczej ten widok zwraca wiersz dla każdej pomocniczej bazy danych w wystąpieniu serwera. W repliki podstawowej ten widok zwraca wiersz dla każdej podstawowej bazy danych i dodatkowy wiersz dla odpowiedniej pomocniczej bazy danych.

Ważny

W zależności od akcji i stanów wyższego poziomu informacje o stanie bazy danych mogą być niedostępne lub nieaktualne. Ponadto wartości mają tylko lokalne znaczenie. Na przykład w repliki podstawowej wartość kolumny last_hardened_lsn odzwierciedla informacje o danej pomocniczej bazie danych, która jest obecnie dostępna dla repliki podstawowej, a nie rzeczywistego numeru sekwencji dziennika ze wzmocnionymi zabezpieczeniami (LSN), który może mieć obecnie replika pomocnicza.

Nazwa kolumny Typ danych Opis (w repliki podstawowej)
database_id Identyfikator bazy danych, unikatowy w ramach wystąpienia programu SQL Server. Jest to taka sama wartość jak wyświetlana w widoku katalogu sys.databases.
group_id uniqueidentifier Identyfikator grupy dostępności, do której należy baza danych.
replica_id uniqueidentifier Identyfikator repliki dostępności w grupie dostępności.
group_database_id uniqueidentifier Identyfikator bazy danych w grupie dostępności. Ten identyfikator jest identyczny w każdej repliki, do której jest przyłączona ta baza danych.
is_local bitów Czy baza danych dostępności jest lokalna, jedną z następujących opcji:

0 = baza danych nie jest lokalna dla wystąpienia programu SQL Server.
1 = baza danych jest lokalna dla wystąpienia serwera.
is_primary_replica bitów Zwraca 1, jeśli replika jest podstawowa lub 0, jeśli jest repliką pomocniczą.

Dotyczy: SQL Server 2014 (12.x) i nowsze wersje.
synchronization_state tinyint Stan przenoszenia danych, jeden z następujących wartości.

0 = Brak synchronizacji. W przypadku podstawowej bazy danych wskazuje, że baza danych nie jest gotowa do zsynchronizowania dziennika transakcji z odpowiednimi pomocniczymi bazami danych. W przypadku pomocniczej bazy danych ta wartość wskazuje, że baza danych nie rozpoczęła synchronizacji dzienników z powodu problemu z połączeniem, jest zawieszona lub przechodzi przez stany przejścia podczas uruchamiania lub przełączania roli.

1 = Synchronizowanie. W przypadku podstawowej bazy danych wskazuje, że baza danych jest gotowa do akceptowania żądania skanowania z pomocniczej bazy danych. W przypadku pomocniczej bazy danych wskazuje, że aktywne przenoszenie danych odbywa się dla bazy danych.

2 = zsynchronizowane. Podstawowa baza danych pokazuje SYNCHRONIZED zamiast SYNCHRONIZING. Pomocnicza baza danych zatwierdzania synchronicznego jest synchronizowana, gdy lokalna pamięć podręczna informuje, że baza danych jest gotowa do pracy w trybie failover i jest synchronizowana.

3 = Przywracanie. Wskazuje fazę procesu cofania, gdy pomocnicza baza danych aktywnie uzyskuje strony z podstawowej bazy danych.

przestroga: Gdy baza danych w repliki pomocniczej znajduje się w stanie REVERTING, wymuszanie przejścia w tryb failover do repliki pomocniczej powoduje pozostawienie bazy danych w stanie, w którym nie można uruchomić jej jako podstawowej bazy danych. Baza danych musi ponownie nawiązać połączenie jako pomocnicza baza danych lub należy zastosować nowe rekordy dziennika z kopii zapasowej dziennika.

4 = inicjowanie. Wskazuje fazę cofania, gdy dziennik transakcji wymagany dla pomocniczej bazy danych do nadrobienia zaległości do cofania LSN jest dostarczany i wzmocniony na repliki pomocniczej.

przestroga: Gdy baza danych w repliki pomocniczej znajduje się w stanie INITIALIZING, wymuszanie przejścia w tryb failover do repliki pomocniczej powoduje pozostawienie bazy danych w stanie, w którym nie można uruchomić jej jako podstawowej bazy danych. Baza danych musi ponownie nawiązać połączenie jako pomocnicza baza danych lub należy zastosować nowe rekordy dziennika z kopii zapasowej dziennika.
synchronization_state_desc nvarchar(60) Opis stanu przenoszenia danych:

NOT SYNCHRONIZING
SYNCHRONIZING
SYNCHRONIZED
REVERTING
INITIALIZING
is_commit_participant bitów 0 = Zatwierdzenie transakcji nie jest synchronizowane w odniesieniu do tej bazy danych.

1 = zatwierdzenie transakcji jest synchronizowane w odniesieniu do tej bazy danych.

W przypadku bazy danych w repliki dostępności zatwierdzania asynchronicznego ta wartość jest zawsze 0.

W przypadku bazy danych w repliki dostępności zatwierdzania synchronicznego ta wartość jest dokładna tylko w podstawowej bazie danych.
synchronization_health tinyint Odzwierciedla przecięcie stanu synchronizacji bazy danych przyłączonej do grupy dostępności w repliki dostępności oraz tryb dostępności repliki dostępności (tryb zatwierdzania synchronicznego lub asynchronicznego zatwierdzenia). Może być jedną z następujących wartości.

0 = nie jest w dobrej kondycji. synchronization_state bazy danych jest 0 (NOT SYNCHRONIZING).

1 = częściowo w dobrej kondycji. Baza danych w repliki dostępności zatwierdzania synchronicznego jest uznawana za częściowo w dobrej kondycji, jeśli synchronization_state jest 1 (SYNCHRONIZING).

2 = w dobrej kondycji. Baza danych w repliki dostępności zatwierdzania synchronicznego jest uważana za w dobrej kondycji, jeśli synchronization_state jest 2 (SYNCHRONIZED), a baza danych w repliki dostępności zatwierdzania asynchronicznego jest uważana za w dobrej kondycji, jeśli synchronization_state jest 1 (SYNCHRONIZING).
synchronization_health_desc nvarchar(60) Opis synchronization_health bazy danych dostępności.

NOT_HEALTHY
PARTIALLY_HEALTHY
HEALTHY
database_state tinyint 0 = Online
1 = przywracanie
2 = Odzyskiwanie
3 = oczekiwanie na odzyskiwanie
4 = podejrzany
5 = awaryjne
6 = offline

Uwaga: taka sama jak kolumna state w sys.databases.
database_state_desc nvarchar(60) Opis database_state repliki dostępności.

ONLINE
RESTORING
RECOVERING
RECOVERY_PENDING
SUSPECT
EMERGENCY
OFFLINE

Uwaga: taka sama jak kolumna state_desc w sys.databases.
is_suspended bitów Stan bazy danych, jeden z:

0 = wznowione
1 = zawieszone
suspend_reason tinyint Jeśli baza danych jest zawieszona, przyczyna stanu wstrzymania:

0 = akcja użytkownika
1 = Wstrzymanie od partnera
2 = Wykonaj ponownie
3 = przechwytywanie
4 = Zastosuj
5 = Ponowne uruchamianie
6 = Cofnij
7 = zmiana
8 = Błąd w obliczeniu pomocniczego punktu synchronizacji repliki
suspend_reason_desc nvarchar(60) Opis przyczyny stanu wstrzymania bazy danych:

SUSPEND_FROM_USER = użytkownik ręcznie wstrzymał przenoszenie danych

SUSPEND_FROM_PARTNER = Replika bazy danych jest zawieszona po wymuszonym przejściu w tryb failover

SUSPEND_FROM_REDO = Wystąpił błąd podczas fazy ponownego wykonywania

SUSPEND_FROM_APPLY = Wystąpił błąd podczas zapisywania dziennika do pliku (zobacz dziennik błędów)

SUSPEND_FROM_CAPTURE = Wystąpił błąd podczas przechwytywania dziennika w repliki podstawowej

SUSPEND_FROM_RESTART = Replika bazy danych została zawieszona przed ponownym uruchomieniem bazy danych (zobacz dziennik błędów)

SUSPEND_FROM_UNDO = Wystąpił błąd podczas fazy cofania (zobacz dziennik błędów)

SUSPEND_FROM_REVALIDATION = Wykryto niezgodność zmian dziennika podczas ponownego nawiązywania połączenia (zobacz dziennik błędów)

SUSPEND_FROM_XRF_UPDATE = Nie można odnaleźć wspólnego punktu dziennika (zobacz dziennik błędów)
recovery_lsn liczbowe (25 0) Na replice podstawowej koniec dziennika transakcji przed zapisaniem nowych rekordów dziennika dziennika po odzyskaniu lub przejściu w tryb failover. W przypadku danej pomocniczej bazy danych, jeśli ta wartość jest mniejsza niż bieżąca wzmocniona nazwa LSN (last_hardened_lsn), recovery_lsn jest wartością, do której ta pomocnicza baza danych będzie musiała ponownie zsynchronizować (czyli przywrócić i ponownie zainicjować). Jeśli ta wartość jest większa lub równa bieżącej wzmocnionej sieci LSN, ponowna synchronizacja będzie niepotrzebna i nie nastąpi.

recovery_lsn odzwierciedla identyfikator bloku dziennika wypełniony zerami. Nie jest to rzeczywista nazwa LSN. Aby uzyskać informacje o sposobie uzyskiwania tej wartości, zobacz Opis wartości kolumn LSN, w dalszej części tego artykułu.
truncation_lsn liczbowe (25 0) W repliki podstawowej w przypadku podstawowej bazy danych odzwierciedlenie minimalnego obcinania dziennika LSN we wszystkich odpowiednich pomocniczych bazach danych. Jeśli obcinanie dziennika lokalnego jest blokowane (na przykład przez operację tworzenia kopii zapasowej), ta nazwa LSN może być wyższa niż lokalna obcięta nazwa LSN.

W przypadku danej pomocniczej bazy danych odzwierciedla punkt obcięcia tej bazy danych.
truncation_lsn odzwierciedla identyfikator bloku dziennika wypełniony zerami. Nie jest to rzeczywisty numer sekwencji dziennika.
last_sent_lsn liczbowe (25 0) Podczas wykonywania zapytań dotyczących repliki podstawowej last_sent_lsn jest zgłaszany dla każdego wiersza bazy danych repliki pomocniczej. Identyfikator bloku dziennika wskazujący punkt, do którego wszystkie bloki dziennika zostały wysłane przez element podstawowy. Jest to identyfikator następnego bloku dziennika, który jest wysyłany, a nie identyfikator ostatnio wysłanego bloku dziennika.

last_sent_lsn odzwierciedla identyfikator bloku dziennika wypełniony zerami. Nie jest to rzeczywisty numer sekwencji dziennika.
last_sent_time data/godzina Podczas wykonywania zapytań dotyczących repliki podstawowej last_sent_time jest zgłaszany dla każdego wiersza bazy danych repliki pomocniczej. Godzina wysłania ostatniego bloku dziennika.
last_received_lsn liczbowe (25 0) Podczas wykonywania zapytań dotyczących repliki pomocniczej last_received_lsn jest zgłaszany dla lokalnego wiersza bazy danych repliki pomocniczej. Identyfikator bloku dziennika identyfikujący punkt, do którego odebrano wszystkie bloki dziennika przez replikę pomocniczą, która hostuje tę pomocniczą bazę danych.

last_received_lsn odzwierciedla identyfikator bloku dziennika wypełniony zerami. Nie jest to rzeczywisty numer sekwencji dziennika.
last_received_time data/godzina Podczas wykonywania zapytań dotyczących repliki pomocniczej last_received_time jest zgłaszany dla lokalnego wiersza bazy danych repliki pomocniczej. Czas odczytu identyfikatora bloku dziennika w ostatnim odebraniu komunikatu w repliki pomocniczej.
last_hardened_lsn liczbowe (25 0) Początek bloku dziennika zawierającego rekordy dziennika ostatniej wzmocnionej sieci LSN w pomocniczej bazie danych.

W podstawowej bazie danych zatwierdzania asynchronicznego lub w bazie danych zatwierdzania synchronicznego, której bieżące zasady są delay, wartość jest NULL. W przypadku innych podstawowych baz danych z zatwierdzeniem synchronicznym last_hardened_lsn wskazuje minimalną wartość utwardzonej sieci LSN we wszystkich pomocniczych bazach danych.

Uwaga:last_hardened_lsn odzwierciedla identyfikator bloku dziennika wypełniony zerami. Nie jest to rzeczywisty numer sekwencji dziennika. Aby uzyskać więcej informacji, zobacz Opis wartości kolumn LSN, w dalszej części tego artykułu.
last_hardened_time data/godzina W pomocniczej bazie danych czas identyfikatora bloku dziennika dla ostatniej wzmocnionej sieci LSN (last_hardened_lsn). W podstawowej bazie danych odzwierciedlony jest czas odpowiadający minimalnej sieci LSN ze wzmocnionymi zabezpieczeniami.
last_redone_lsn liczbowe (25 0) Rzeczywisty numer sekwencji dziennika ostatniego rekordu dziennika, który został ponownie zapisany w pomocniczej bazie danych. last_redone_lsn jest zawsze mniejsza niż last_hardened_lsn.
last_redone_time data/godzina Godzina ponownego utworzenia ostatniego rekordu dziennika w pomocniczej bazie danych.
log_send_queue_size bigint Liczba rekordów dziennika podstawowej bazy danych, która nie została wysłana do pomocniczych baz danych w kilobajtach (KB).
log_send_rate bigint Średnia szybkość wysyłania danych przez wystąpienie repliki podstawowej w ostatnim aktywnym okresie w kilobajtach (KB)/sekundach.
redo_queue_size bigint Liczba rekordów dziennika w plikach dziennika repliki pomocniczej, które nie są jeszcze ponownie w kilobajtach (KB).
redo_rate bigint Średnia szybkość, z jaką rekordy dziennika są redone w danej pomocniczej bazie danych, w kilobajtach (KB)/sekundach.

redo_rate jest obliczana przez podzielenie całkowitej liczby bajtów dzienników ponownie od czasu uruchomienia aparatu bazy danych przez przedział czasu, gdy ponowne uruchomienie było aktywne, a nie przez czas, który upłynął. Ponieważ ponowne wykonanie może nie być uruchomione w sposób ciągły, wynikowa wartość może być inna (wyższa) niż wartość licznika wydajności Database Replica:Redone Bytes/sec.
filestream_send_rate bigint Określa szybkość wysyłania plików FILESTREAM do repliki pomocniczej w kilobajtach (KB)/sekundy.
end_of_log_lsn liczbowe (25 0) Lokalny koniec dziennika LSN. Rzeczywista nazwa LSN odpowiadająca ostatniemu rekordowi dziennika w pamięci podręcznej dzienników w podstawowych i pomocniczych bazach danych. W repliki podstawowej wiersze pomocnicze odzwierciedlają koniec nazwy LSN dziennika z najnowszych komunikatów postępu wysyłanych przez repliki pomocnicze wysyłane do repliki podstawowej.

end_of_log_lsn odzwierciedla identyfikator bloku dziennika wypełniony zerami. Nie jest to rzeczywisty numer sekwencji dziennika. Aby uzyskać więcej informacji, zobacz Opis wartości kolumn LSN, w dalszej części tego artykułu.
last_commit_lsn liczbowe (25 0) Rzeczywisty numer sekwencji dziennika odpowiadający ostatniemu rekordowi zatwierdzenia w dzienniku transakcji.

W podstawowej bazie danych odpowiada to ostatniemu przetworzonemu rekordowi zatwierdzenia. Wiersze pomocniczych baz danych pokazują numer sekwencji dziennika wysyłany przez replikę pomocniczą do repliki podstawowej.
W repliki pomocniczej jest to ostatni rekord zatwierdzenia, który został ponownie uruchomiony.
last_commit_time data/godzina Czas odpowiadający ostatniemu rekordowi zatwierdzenia.

W pomocniczej bazie danych tym razem jest taka sama jak w podstawowej bazie danych.

W repliki podstawowej każdy wiersz pomocniczej bazy danych wyświetla czas, przez który replika pomocnicza hostuje pomocniczą bazę danych zgłoszoną z powrotem do repliki podstawowej. Różnica czasu między wierszem podstawowej bazy danych a danym wierszem pomocniczej bazy danych reprezentuje w przybliżeniu cel punktu odzyskiwania (RPO), zakładając, że proces ponownego wykonania jest przechwycony i że postęp został zgłoszony z powrotem do repliki podstawowej przez replikę pomocniczą.
low_water_mark_for_ghosts bigint Monotonicznie rosnąca liczba dla bazy danych wskazująca niski znacznik wody używany przez czyszczenie magazynu duchów i trwałych wersji w podstawowej bazie danych. Jeśli obciążenie zapisu jest uruchomione na serwerze podstawowym, ale liczba ta nie zwiększa się wraz z upływem czasu, oznacza to, że czyszczenie magazynu duchów i trwałych wersji może być wstrzymane. Aby zdecydować, które wiersze duchów i które wersje wierszy mają być czyszczone, replika podstawowa używa minimalnej wartości tej kolumny dla tej bazy danych we wszystkich replikach (w tym repliki podstawowej).
secondary_lag_seconds bigint Liczba sekund, przez jaką replika pomocnicza znajduje się za repliką podstawową podczas synchronizacji.

W repliki podstawowej opóźnienie synchronizacji (opóźnienie) dla każdej pomocniczej bazy danych jest obliczane jako liczba sekund od utwardzania najwcześniejszej wzmocnionej sieci LSN w repliki podstawowej, która nie została jeszcze wzmocniona w repliki pomocniczej. Ta wartość jest wyświetlana jako 0, jeśli przenoszenie danych jest zawieszone. Aby ta wartość pokazywała aktywne opóźnienie, przenoszenie danych musi być w stanie bez wstrzymania.

Dotyczy: SQL Server 2016 (13.x) i nowsze wersje.

Omówienie wartości kolumn LSN

Wartości kolumn end_of_log_lsn, last_hardened_lsn, last_received_lsn, last_sent_lsn, recovery_lsni truncation_lsn nie są rzeczywistymi numerami sekwencji dzienników (LDN). Zamiast tego każda z tych wartości odzwierciedla identyfikator bloku dziennika wypełniony zerami.

end_of_log_lsn, last_hardened_lsni recovery_lsn są opróżniane sieci LSN. Na przykład last_hardened_lsn wskazuje początek następnego bloku obok bloków, które znajdują się już na dysku. Więc każdy LSN mniej wartości last_hardened_lsn jest na dysku. Sieci LSN, które są większe lub równe tej wartości, nie są opróżniane.

Spośród wartości LSN zwracanych przez sys.dm_hadr_database_replica_statestylko last_redone_lsn jest rzeczywistą siecią LSN.

Uprawnienia

Program SQL Server 2019 (15.x) i starsze wersje wymagają uprawnień VIEW SERVER STATE na serwerze.

Program SQL Server 2022 (16.x) i nowsze wersje wymagają uprawnień VIEW SERVER PERFORMANCE STATE na serwerze.