sys.dm_hadr_database_replica_states (Transact-SQL)

Platí na:SQL ServerAzureSQL Managed Instance

Vrátí řádek pro každou databázi, která se účastní skupiny dostupnosti AlwaysOn, pro kterou místní instance SQL Serveru hostuje repliku dostupnosti. Toto zobrazení dynamické správy zveřejňuje informace o stavu jak u primárních, tak sekundárních replik. V sekundární replice vrátí toto zobrazení řádek pro každou sekundární databázi v instanci serveru. V primární replice toto zobrazení vrátí řádek pro každou primární databázi a další řádek pro odpovídající sekundární databázi.

Important

V závislosti na stavu akce a vyšší úrovně můžou být informace o stavu databáze nedostupné nebo zastaralé. Kromě toho mají hodnoty pouze místní relevanci. Například hodnota sloupce last_hardened_lsn na primární replice odráží informace o dané sekundární databázi, která je aktuálně k dispozici pro primární repliku, nikoli skutečné pořadové číslo posíleného protokolu (LSN), které sekundární replika aktuálně obsahuje.

Název sloupce Datový typ Nullovatelný Popis (na primární replice)
database_id int No Identifikátor databáze, jedinečný v rámci instance SQL Serveru. Tato hodnota je stejná jako zobrazená v zobrazení katalogu sys.databases.
group_id uniqueidentifier No Identifikátor skupiny dostupnosti, do které databáze patří.
replica_id uniqueidentifier No Identifikátor repliky dostupnosti v rámci skupiny dostupnosti
group_database_id uniqueidentifier No Identifikátor databáze v rámci skupiny dostupnosti. Tento identifikátor je stejný na každé replice, ke které je tato databáze připojena.
is_local bit Ano Jestli je databáze dostupnosti místní, jedna z těchto možností:

0 = Databáze není místní pro instanci SQL Server.
1 = Databáze je místní pro instanci serveru.
is_primary_replica bit Ano Vrátí 1, pokud je replika primární, nebo 0, pokud se jedná o sekundární repliku.

platí pro: SQL Server 2014 (12.x) a novější verze.
synchronization_state tinyint Ano Stav přesunu dat, jedna z následujících hodnot.

0 = Nesynchronní. U primární databáze značí, že databáze není připravená synchronizovat svůj transakční protokol s odpovídajícími sekundárními databázemi. U sekundární databáze tato hodnota značí, že databáze nespustí synchronizaci protokolů kvůli problému s připojením, je pozastavená nebo prochází stavy přechodu během spuštění nebo přepínače role.

1 = Synchronizace. U primární databáze označuje, že databáze je připravená přijmout požadavek kontroly ze sekundární databáze. U sekundární databáze označuje, že pro databázi probíhá aktivní přesun dat.

2 = Synchronizované. Primární databáze zobrazuje SYNCHRONIZED místo SYNCHRONIZING. Sekundární databáze synchronního potvrzení zobrazuje synchronizaci, když místní mezipaměť říká, že databáze je připravená a synchronizuje se.

3 = vrátit zpět. Označuje fázi procesu vrácení zpět, když sekundární databáze aktivně získává stránky z primární databáze.

Upozornění: Pokud je databáze na sekundární replice ve stavu REVERTING, vynucení převzetí služeb při selhání sekundární replikou opustí databázi ve stavu, ve kterém nejde spustit jako primární databázi. Buď se databáze musí znovu připojit jako sekundární databáze, nebo musíte použít nové záznamy protokolu ze zálohy protokolu.

4 = Inicializace. Indikuje fázi vrácení, kdy je protokol transakcí potřebný pro to, aby sekundární databáze mohla dohnat undo LSN. Tento protokol je odesílán a zpevňován na sekundární replice.

Upozornění: Pokud je databáze na sekundární replice ve stavu INITIALIZING, vynucení převzetí služeb při selhání sekundární replikou opustí databázi ve stavu, ve kterém nejde spustit jako primární databázi. Buď se databáze musí znovu připojit jako sekundární databáze, nebo musíte použít nové záznamy protokolu ze zálohy protokolu.
synchronization_state_desc nvarchar(60) Ano Popis stavu přesunu dat:

NOT SYNCHRONIZING
SYNCHRONIZING
SYNCHRONIZED
REVERTING
INITIALIZING
is_commit_participant bit Ano 0 = Potvrzení transakce není synchronizováno s ohledem na tuto databázi.

1 = Potvrzení transakce je synchronizováno s ohledem na tuto databázi.

Pro databázi v replice dostupnosti asynchronního potvrzení je tato hodnota vždy 0.

U databáze na replikě dostupnosti synchronního potvrzení je tato hodnota přesná pouze u primární databáze.
synchronization_health tinyint Ano Odráží průnik stavu synchronizace databáze, která je připojená ke skupině dostupnosti repliky dostupnosti, a režim dostupnosti repliky dostupnosti (synchronní nebo asynchronní režim potvrzení). Může to být jedna z následujících hodnot.

0 = Není v pořádku. synchronization_state databáze je 0 (NOT SYNCHRONIZING).

1 = Částečně v pořádku. Databáze repliky dostupnosti synchronního potvrzení se považuje za částečně v pořádku, pokud je synchronization_state1 (SYNCHRONIZING).

2 = v pořádku. Databáze repliky dostupnosti synchronního potvrzení je považována za v pořádku, pokud je synchronization_state2 (SYNCHRONIZED) a databáze repliky dostupnosti asynchronního potvrzení je považována za v pořádku, pokud je synchronization_state1 (SYNCHRONIZING).
synchronization_health_desc nvarchar(60) Ano Popis synchronization_health databáze dostupnosti

NOT_HEALTHY
PARTIALLY_HEALTHY
HEALTHY
database_state tinyint Ano 0 = online
1 = Obnovení
2 = Obnovení
3 = Čeká na obnovení
4 = podezřelý
5 = tísňové volání
6 = offline

Poznámka: stejný jako sloupec state v sys.databases.
database_state_desc nvarchar(60) Ano Popis database_state repliky dostupnosti

ONLINE
RESTORING
RECOVERING
RECOVERY_PENDING
SUSPECT
EMERGENCY
OFFLINE

Poznámka: stejný jako sloupec state_desc v sys.databases.
is_suspended bit Ano Stav databáze:

0 = obnoveno
1 = pozastaveno
suspend_reason tinyint Ano Pokud je databáze pozastavená, důvodem pozastaveného stavu je jedna z těchto možností:

0 = akce uživatele
1 = Pozastavit od partnera
2 = Znovu
3 = Zachytávání
4 = Použít
5 = Restartovat
6 = Zpět
7 = Opětovné ověření
8 = Chyba při výpočtu bodu synchronizace sekundární repliky
suspend_reason_desc nvarchar(60) Ano Popis důvodu pozastaveného stavu databáze:

SUSPEND_FROM_USER = uživatel ručně pozastavil přesun dat.

SUSPEND_FROM_PARTNER = Replika databáze je pozastavena po vynuceném převzetí služeb při selhání

SUSPEND_FROM_REDO = Došlo k chybě během fáze opakování.

SUSPEND_FROM_APPLY = Při zápisu protokolu do souboru došlo k chybě (viz protokol chyb).

SUSPEND_FROM_CAPTURE = Při zachytávání protokolu primární repliky došlo k chybě.

SUSPEND_FROM_RESTART = Replika databáze byla pozastavena před restartováním databáze (viz protokol chyb).

SUSPEND_FROM_UNDO = Během fáze vrácení zpět došlo k chybě (viz protokol chyb).

SUSPEND_FROM_REVALIDATION = Při opětovném připojení se zjistí neshoda změn protokolu (viz protokol chyb).

SUSPEND_FROM_XRF_UPDATE = Nelze najít společný bod protokolu (viz protokol chyb).
recovery_lsn numeric(25; 0) Ano Na primární replice zapíše konec transakčního protokolu před primární databází všechny nové záznamy protokolu po obnovení nebo převzetí služeb při selhání. Pokud je tato hodnota pro danou sekundární databázi menší než aktuální posílená hodnota LSN (last_hardened_lsn), recovery_lsn je hodnota, na kterou by se tato sekundární databáze potřebovala znovu synchronizovat (to znamená vrátit se k databázi a znovu inicializovat). Pokud je tato hodnota větší nebo rovna aktuálnímu posíleného LSN, bude opětovná synchronizace nepotřebná a nedojde k nim.

recovery_lsn odráží ID bloku protokolu vycpané nulami. Není to skutečný LSN. Informace o tom, jak je tato hodnota odvozena, naleznete v tématu Vysvětlení hodnot sloupců LSN, dále v tomto článku.
truncation_lsn numeric(25; 0) Ano U primární repliky se u primární databáze odráží minimální zkrácení protokolu LSN ve všech odpovídajících sekundárních databázích. Pokud je blokování místního zkrácení protokolu (například operací zálohování), může být toto LSN vyšší než místní zkrácení LSN.

U dané sekundární databáze odráží bod zkrácení této databáze.
truncation_lsn odráží ID bloku protokolu s nulami. Nejedná se o skutečné pořadové číslo protokolu.
last_sent_lsn numeric(25; 0) Ano Při dotazování primární repliky se last_sent_lsn hlásí pro každý řádek databáze sekundární repliky. Identifikátor bloku protokolu, který označuje bod, do kterého byly všechny bloky protokolu odeslány primárním serverem. Toto je ID dalšího bloku protokolu, který se odešle, a nikoli ID naposledy odeslaného bloku protokolu.

last_sent_lsn odráží ID bloku protokolu s nulami. Nejedná se o skutečné pořadové číslo protokolu.
last_sent_time datetime Ano Při dotazování primární repliky se last_sent_time hlásí pro každý řádek databáze sekundární repliky. Čas odeslání posledního bloku protokolu
last_received_lsn numeric(25; 0) Ano Při dotazování na sekundární repliku se last_received_lsn zobrazí pro řádek databáze místní sekundární repliky. ID bloku protokolu identifikující bod, do kterého byly přijaty všechny bloky protokolu sekundární replikou, která je hostitelem této sekundární databáze.

last_received_lsn odráží ID bloku protokolu vycpané nulami. Nejedná se o skutečné pořadové číslo protokolu.
last_received_time datetime Ano Při dotazování na sekundární repliku se last_received_time zobrazí pro řádek databáze místní sekundární repliky. Čas načtení ID bloku protokolu v poslední přijaté zprávě na sekundární replice
last_hardened_lsn numeric(25; 0) Ano Začátek bloku protokolu obsahujícího záznamy protokolu posledního posíleného LSN v sekundární databázi

V primární databázi asynchronního potvrzení nebo v synchronní databázi, jejíž aktuální zásada je delay, je hodnota NULL. U jiných primárních databází synchronního potvrzení last_hardened_lsn označuje minimální posílení LSN ve všech sekundárních databázích.

Poznámka:last_hardened_lsn odráží ID bloku protokolu s nulami. Nejedná se o skutečné pořadové číslo protokolu. Další informace najdete v tématu Vysvětlení hodnot sloupců LSN, dále v tomto článku.
last_hardened_time datetime Ano V sekundární databázi je čas identifikátoru bloku protokolu pro poslední posílenou LSN (last_hardened_lsn). V primární databázi odráží čas odpovídající minimálnímu posílení sítě LSN.
last_redone_lsn numeric(25; 0) Ano Skutečné pořadové číslo posledního záznamu protokolu, který byl znovu v sekundární databázi. last_redone_lsn je vždy menší než last_hardened_lsn.
last_redone_time datetime Ano Čas opětovného posledního záznamu protokolu v sekundární databázi
log_send_queue_size bigint Ano Počet záznamů protokolu primární databáze, která nebyla odeslána do sekundárních databází, v kilobajtech (KB).
log_send_rate bigint Ano Průměrná rychlost, za kterou instance primární repliky posílala data během posledního aktivního období v kilobajtech (KB) za sekundu.
redo_queue_size bigint Ano Počet záznamů protokolu v souborech protokolu sekundární repliky, které ještě nejsou znovu v kilobajtech (KB).
redo_rate bigint Ano Průměrná rychlost opětovného zápisu záznamů protokolu v dané sekundární databázi v kilobajtech (KB) za sekundu.

redo_rate se vypočítá tak, že se celkový počet bajtů protokolu znovu vydělí od spuštění databázového stroje podle časového rozsahu, kdy se znovu aktivně spustilo, a ne uplynulým časem. Vzhledem k tomu, že opakování nemusí běžet nepřetržitě, výsledná hodnota se může lišit (vyšší) než hodnota Database Replica:Redone Bytes/sec čítače výkonu.
filestream_send_rate bigint Ano Určuje rychlost odeslání souborů FILESTREAM do sekundární repliky v kilobajtech (KB)/sekundu.
end_of_log_lsn numeric(25; 0) Ano Místní konec protokolu LSN. Skutečný LSN odpovídající poslednímu záznamu protokolu v mezipaměti protokolů v primární a sekundární databázi. V primární replice sekundární řádky odrážejí konec protokolu LSN z nejnovějších zpráv o průběhu, které sekundární repliky odesílané do primární repliky.

end_of_log_lsn odráží ID bloku protokolu s nulami. Nejedná se o skutečné pořadové číslo protokolu. Další informace najdete v tématu Vysvětlení hodnot sloupců LSN, dále v tomto článku.
last_commit_lsn numeric(25; 0) Ano Skutečné pořadové číslo protokolu odpovídající poslednímu záznamu potvrzení v transakčním protokolu.

V primární databázi to odpovídá poslednímu zpracovanému záznamu potvrzení. Řádky sekundárních databází zobrazují pořadové číslo protokolu, které sekundární replika odeslala do primární repliky.
Na sekundární replice se jedná o poslední záznam potvrzení, který byl znovu aktivován.
last_commit_time datetime Ano Čas odpovídající poslednímu záznamu potvrzení

V sekundární databázi je tentokrát stejná jako u primární databáze.

Na primární replice se u každého sekundárního řádku databáze zobrazí čas, kdy sekundární replika hostující sekundární databázi ohlásila zpět primární replice. Rozdíl v čase mezi řádkem primární databáze a daným řádkem sekundární databáze představuje přibližně cíl bodu obnovení (RPO) za předpokladu, že se proces opětovného dokončení zachytí a že se průběh nahlásil zpět do primární repliky sekundární replikou. Další informace naleznete v tématu Výpočet sekundárního databázového cíle bodu obnovení.
low_water_mark_for_ghosts bigint Ano Monotonicky rostoucí číslo pro databázi označující nízkou hladinu použitou stínovým a trvalým úložištěm verzí čištění primární databáze. Pokud úloha zápisu běží na primárním serveru, ale toto číslo se v průběhu času nezvyšuje, znamená to, že čištění úložiště stínových a trvalých verzí se může uchovávat. Pokud chcete rozhodnout, které řádky duchů a které verze řádků se mají vyčistit, primární replika použije minimální hodnotu tohoto sloupce pro tuto databázi napříč všemi replikami (včetně primární repliky).
secondary_lag_seconds bigint Ano Počet sekund, po které je sekundární replika za primární replikou během synchronizace.

Na primární replice se zpoždění synchronizace (prodleva) pro každou sekundární databázi vypočítá jako počet sekund, protože posílení nejstaršího posíleného LSN na primární replice, která ještě není na sekundární replice posílená. Tato hodnota se zobrazí jako 0, pokud je přesun dat pozastavený. Aby mohla tato hodnota zobrazit aktivní prodlevu, musí být přesun dat v pozastaveném stavu.

Platí pro: SQL Server 2016 (13.x) a novější verze.
quorum_commit_lsn numeric(25; 0) Ano Určeno pouze pro informační účely. Není podporováno. Budoucí kompatibilita není zaručena.
quorum_commit_time datetime Ano Určeno pouze pro informační účely. Není podporováno. Budoucí kompatibilita není zaručena.
is_internal bit Ano Určeno pouze pro informační účely. Není podporováno. Budoucí kompatibilita není zaručena.

Vysvětlení hodnot sloupců LSN

Hodnoty end_of_log_lsn, last_hardened_lsn, last_received_lsn, last_sent_lsn, recovery_lsna truncation_lsn sloupců nejsou skutečnými pořadovými čísly protokolu (LSN). Každá z těchto hodnot odráží ID bloku protokolu vycpané nulami.

end_of_log_lsn, last_hardened_lsna recovery_lsn jsou vyprázdněny sítě LSN. Například last_hardened_lsn označuje začátek dalšího bloku za bloky, které jsou již na disku. Takže jakýkoli LSN menší hodnota last_hardened_lsn je na disku. Sítě LSN, které jsou větší nebo rovny této hodnotě, nejsou vyprázdněny.

Z hodnot LSN vrácených pouze sys.dm_hadr_database_replica_states a last_redone_lsn jsou skutečnými sítěmi last_commit_lsnLSN.

Povolení

SQL Server 2019 (15.x) a starší verze vyžadují oprávnění VIEW SERVER STATE na serveru.

SQL Server 2022 (16.x) a novější verze vyžadují VIEW SERVER PERFORMANCE STATE oprávnění k serveru.