Sdílet prostřednictvím


sys.dm_hadr_database_replica_states (Transact-SQL)

platí pro:SQL Serverazure SQL 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.

Důležitý

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 Popis (na primární replice)
database_id int 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 Identifikátor skupiny dostupnosti, do které databáze patří.
replica_id uniqueidentifier Identifikátor repliky dostupnosti v rámci skupiny dostupnosti
group_database_id uniqueidentifier 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 bitová Jestli je databáze dostupnosti místní, jedna z těchto možností:

0 = Databáze není místní pro instanci SQL Serveru.
1 = Databáze je místní pro instanci serveru.
is_primary_replica bitová 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 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. Určuje fázi vrácení zpět v případě, že se odesílá a posílení zabezpečení transakčního protokolu požadovaného pro sekundární databázi, aby bylo možné provést vrácení LSN zpět do sekundární repliky.

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) Popis stavu přesunu dat:

NOT SYNCHRONIZING
SYNCHRONIZING
SYNCHRONIZED
REVERTING
INITIALIZING
is_commit_participant bitová 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 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) Popis synchronization_health databáze dostupnosti

NOT_HEALTHY
PARTIALLY_HEALTHY
HEALTHY
database_state tinyint 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) 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 bitová Stav databáze:

0 = obnoveno
1 = pozastaveno
suspend_reason tinyint 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 = Capture
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) 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 čísel(25 0) 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 čísel(25 0) 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 čísel(25 0) 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 data a času 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 čísel(25 0) 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 data a času 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 čísel(25 0) 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 data a času 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 čísel(25 0) 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 data a času Čas opětovného posledního záznamu protokolu v sekundární databázi
log_send_queue_size bigint 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 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 Počet záznamů protokolu v souborech protokolu sekundární repliky, které ještě nejsou znovu v kilobajtech (KB).
redo_rate bigint 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 Určuje rychlost odeslání souborů FILESTREAM do sekundární repliky v kilobajtech (KB)/sekundu.
end_of_log_lsn čísel(25 0) 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 čísel(25 0) 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 data a času Č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 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 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í nejdříve 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.

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 sys.dm_hadr_database_replica_states, pouze last_redone_lsn je skutečný LSN.

Dovolení

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í na serveru.