Dela via


sys.dm_hadr_database_replica_states (Transact-SQL)

gäller för:SQL ServerAzure SQL Managed Instance

Returnerar en rad för varje databas som deltar i en AlwaysOn-tillgänglighetsgrupp för vilken den lokala instansen av SQL Server är värd för en tillgänglighetsreplik. Den här dynamiska hanteringsvyn visar tillståndsinformation om både primära och sekundära repliker. På en sekundär replik returnerar den här vyn en rad för varje sekundär databas på serverinstansen. På den primära repliken returnerar den här vyn en rad för varje primär databas och en extra rad för motsvarande sekundära databas.

Viktig

Beroende på åtgärden och tillstånd på högre nivå kan databastillståndsinformation vara otillgänglig eller inaktuell. Dessutom har värdena endast lokal relevans. På den primära repliken återspeglar till exempel värdet för kolumnen last_hardened_lsn informationen om en viss sekundär databas som för närvarande är tillgänglig för den primära repliken, inte det faktiska härdade loggsekvensnumret (LSN) som den sekundära repliken kan ha för närvarande.

Kolumnnamn Datatyp Beskrivning (på primär replik)
database_id int Identifierare för databasen, unik i en instans av SQL Server. Det här är samma värde som visas i sys.databases katalogvy.
group_id unikidentifierare Identifierare för tillgänglighetsgruppen som databasen tillhör.
replica_id unikidentifierare Identifierare för tillgänglighetsrepliken i tillgänglighetsgruppen.
group_database_id unikidentifierare Identifierare för databasen i tillgänglighetsgruppen. Den här identifieraren är identisk på varje replik som databasen är ansluten till.
is_local bit Om tillgänglighetsdatabasen är lokal, något av följande:

0 = Databasen är inte lokal för SQL Server-instansen.
1 = Databasen är lokal för serverinstansen.
is_primary_replica bit Returnerar 1 om repliken är primär eller 0 om det är en sekundär replik.

gäller för: SQL Server 2014 (12.x) och senare versioner.
synchronization_state pytteliten Dataförflyttningstillstånd, ett av följande värden.

0 = Synkroniseras inte. För en primär databas anger att databasen inte är redo att synkronisera sin transaktionslogg med motsvarande sekundära databaser. För en sekundär databas anger det här värdet att databasen inte har startat loggsynkronisering på grund av ett anslutningsproblem, pausas eller genomgår övergångstillstånd under start eller en rollväxling.

1 = Synkronisering. För en primär databas anger att databasen är redo att acceptera en genomsökningsbegäran från en sekundär databas. För en sekundär databas anger att aktiv dataflytt sker för databasen.

2 = Synkroniserad. En primär databas visar SYNCHRONIZED i stället för SYNCHRONIZING. En synkron-commit sekundär databas visar synkroniserad när den lokala cachen säger att databasen är redundansklar och synkroniseras.

3 = Återgå. Anger fasen i ångra-processen när en sekundär databas aktivt hämtar sidor från den primära databasen.

Varning: När en databas på en sekundär replik är i REVERTING tillstånd lämnar tvingad redundansväxling till den sekundära repliken databasen i ett tillstånd där den inte kan startas som en primär databas. Antingen måste databasen återansluta som en sekundär databas, eller så måste du använda nya loggposter från en loggsäkerhetskopia.

4 = Initiera. Anger fasen för ångra när transaktionsloggen som krävs för en sekundär databas för att komma ikapp ångra LSN levereras och härdas på en sekundär replik.

Varning: När en databas på en sekundär replik är i INITIALIZING tillstånd lämnar tvingad redundansväxling till den sekundära repliken databasen i ett tillstånd där den inte kan startas som en primär databas. Antingen måste databasen återansluta som en sekundär databas, eller så måste du använda nya loggposter från en loggsäkerhetskopia.
synchronization_state_desc nvarchar(60) Beskrivning av dataförflyttningstillståndet, en av:

NOT SYNCHRONIZING
SYNCHRONIZING
SYNCHRONIZED
REVERTING
INITIALIZING
is_commit_participant bit 0 = Transaktionsincheckning synkroniseras inte med den här databasen.

1 = Transaktionsincheckning synkroniseras med avseende på den här databasen.

För en databas på en tillgänglighetsreplik med asynkron incheckning är det här värdet alltid 0.

För en databas på en synkron tillgänglighetsreplik för incheckning är det här värdet endast korrekt för den primära databasen.
synchronization_health pytteliten Återspeglar skärningspunkten för synkroniseringstillståndet för en databas som är ansluten till tillgänglighetsgruppen på tillgänglighetsrepliken och tillgänglighetsläget för tillgänglighetsrepliken (synkront incheckningsläge eller asynkront incheckningsläge). Kan vara något av följande värden.

0 = Inte felfri. Databasens synchronization_state är 0 (NOT SYNCHRONIZING).

1 = Delvis felfri. En databas på en synkron tillgänglighetsreplik anses vara delvis felfri om synchronization_state är 1 (SYNCHRONIZING).

2 = Felfri. En databas på en tillgänglighetsreplik för synkron incheckning anses vara felfri om synchronization_state är 2 (SYNCHRONIZED), och en databas på en tillgänglighetsreplik med asynkron incheckning anses vara felfri om synchronization_state är 1 (SYNCHRONIZING).
synchronization_health_desc nvarchar(60) Beskrivning av tillgänglighetsdatabasens synchronization_health.

NOT_HEALTHY
PARTIALLY_HEALTHY
HEALTHY
database_state pytteliten 0 = Online
1 = Återställa
2 = Återställning
3 = Återställning väntar
4 = Misstänkt
5 = Nödläge
6 = Offline

Obs! samma som state kolumn i sys.databases.
database_state_desc nvarchar(60) Beskrivning av database_state för tillgänglighetsrepliken.

ONLINE
RESTORING
RECOVERING
RECOVERY_PENDING
SUSPECT
EMERGENCY
OFFLINE

Obs! samma som state_desc kolumn i sys.databases.
is_suspended bit Databastillstånd, något av:

0 = Återupptas
1 = Pausad
suspend_reason pytteliten Om databasen är pausad beror orsaken till det inaktiverade tillståndet, något av:

0 = Användaråtgärd
1 = Pausa från partner
2 = Gör om
3 = Capture
4 = Använd
5 = Starta om
6 = Ångra
7 = Revalidation
8 = Fel vid beräkningen av synkroniseringspunkten för sekundär replik
suspend_reason_desc nvarchar(60) Beskrivning av orsaken till det inaktiverade tillståndet i databasen, något av:

SUSPEND_FROM_USER = En användare pausade dataflytt manuellt

SUSPEND_FROM_PARTNER = Databasrepliken pausas efter en tvingad redundansväxling

SUSPEND_FROM_REDO = Ett fel uppstod under omgörningsfasen

SUSPEND_FROM_APPLY = Ett fel uppstod när loggen skrevs till filen (se felloggen)

SUSPEND_FROM_CAPTURE = Ett fel uppstod vid insamling av loggen på den primära repliken

SUSPEND_FROM_RESTART = Databasrepliken avbröts innan databasen startades om (se felloggen)

SUSPEND_FROM_UNDO = Ett fel uppstod under ångra-fasen (se felloggen)

SUSPEND_FROM_REVALIDATION = Matchningsfel för loggändring identifieras vid återanslutning (se fellogg)

SUSPEND_FROM_XRF_UPDATE = Det går inte att hitta den gemensamma loggpunkten (se felloggen)
recovery_lsn numerisk(25,0) På den primära repliken, slutet av transaktionsloggen innan den primära databasen skriver nya loggposter efter återställning eller redundansväxling. För en viss sekundär databas, om det här värdet är mindre än det aktuella härdade LSN (last_hardened_lsn), är recovery_lsn det värde som den sekundära databasen skulle behöva synkronisera om (d.v.s. för att återgå till och initiera om till). Om det här värdet är större än eller lika med det aktuella härdade LSN:t skulle omsynkronisering vara onödig och skulle inte inträffa.

recovery_lsn visar ett loggblocks-ID som är vadderat med nollor. Det är inte ett riktigt LSN. Information om hur det här värdet härleds finns i Förstå LSN-kolumnvärdena, senare i den här artikeln.
truncation_lsn numerisk(25,0) För den primära databasen på den primära repliken återspeglar den minsta loggtrunkerings-LSN för alla motsvarande sekundära databaser. Om lokal loggtrunkering blockeras (till exempel av en säkerhetskopieringsåtgärd) kan detta LSN vara högre än det lokala trunkerings-LSN.

För en viss sekundär databas återspeglar trunkeringspunkten för databasen.
truncation_lsn visar ett loggblocks-ID med nollor. Det är inte ett verkligt loggsekvensnummer.
last_sent_lsn numerisk(25,0) När du kör frågor mot den primära repliken rapporteras last_sent_lsn för varje sekundär replikdatabasrad. Loggblocksidentifieraren som anger den punkt upp till vilken alla loggblock har skickats av den primära. Det här är ID:t för nästa loggblock som skickas i stället för ID:t för det senast skickade loggblocket.

last_sent_lsn visar ett loggblocks-ID med nollor. Det är inte ett verkligt loggsekvensnummer.
last_sent_time datetime När du kör frågor mot den primära repliken rapporteras last_sent_time för varje sekundär replikdatabasrad. Tid då det senaste loggblocket skickades.
last_received_lsn numerisk(25,0) När du kör frågor mot en sekundär replik rapporteras last_received_lsn för den lokala sekundära replikdatabasraden. Loggblocks-ID som identifierar den punkt som alla loggblock har tagits emot av den sekundära repliken som är värd för den sekundära databasen.

last_received_lsn visar ett loggblocks-ID som är vadderat med nollor. Det är inte ett verkligt loggsekvensnummer.
last_received_time datetime När du kör frågor mot en sekundär replik rapporteras last_received_time för den lokala sekundära replikdatabasraden. Tid då loggblocks-ID:t i det senaste meddelandet som togs emot lästes på den sekundära repliken.
last_hardened_lsn numerisk(25,0) Start av loggblocket som innehåller loggposterna för senaste härdade LSN på en sekundär databas.

På en primär databas med asynkron incheckning eller på en synkron incheckningsdatabas vars aktuella princip är delayär värdet NULL. För andra synkrona primära databaser anger last_hardened_lsn det lägsta härdade LSN-värdet för alla sekundära databaser.

Obs!last_hardened_lsn visar ett loggblocks-ID med nollor. Det är inte ett verkligt loggsekvensnummer. Mer information finns i Förstå LSN-kolumnvärdena, senare i den här artikeln.
last_hardened_time datetime I en sekundär databas är tiden för loggblocksidentifieraren för den senaste härdade LSN (last_hardened_lsn). I en primär databas visar den tid som motsvarar minsta härdade LSN.
last_redone_lsn numerisk(25,0) Verkligt loggsekvensnummer för den senaste loggposten som gjordes om på den sekundära databasen. last_redone_lsn är alltid mindre än last_hardened_lsn.
last_redone_time datetime Tid då den senaste loggposten gjordes om på den sekundära databasen.
log_send_queue_size bigint Antal loggposter för den primära databasen som inte har skickats till de sekundära databaserna, i kilobyte (KB).
log_send_rate bigint Genomsnittlig hastighet med vilken den primära replikinstansen skickade data under den senaste aktiva perioden, i kilobyte (KB)/sekund.
redo_queue_size bigint Antal loggposter i loggfilerna för den sekundära repliken som ännu inte har gjorts om, i kilobyte (KB).
redo_rate bigint Genomsnittlig hastighet med vilken loggposterna görs om på en viss sekundär databas, i kilobyte (KB)/sekund.

redo_rate beräknas genom att dividera det totala antalet loggbyte som gjorts om sedan databasmotorns start med det tidsintervall då omeringen aktivt kördes, i stället för efter den förflutna tiden. Eftersom redo kanske inte körs kontinuerligt kan det resulterande värdet vara annorlunda (högre) än värdet för Database Replica:Redone Bytes/sec prestandaräknare.
filestream_send_rate bigint Anger den hastighet med vilken FILESTREAM-filerna skickas till den sekundära repliken i kilobyte (KB)/sekund.
end_of_log_lsn numerisk(25,0) Lokal slut på logg-LSN. Verkligt LSN som motsvarar den senaste loggposten i loggcachen på de primära och sekundära databaserna. På den primära repliken återspeglar de sekundära raderna slutet av logg-LSN från de senaste förloppsmeddelandena som de sekundära replikerna skickade till den primära repliken.

end_of_log_lsn visar ett loggblocks-ID med nollor. Det är inte ett verkligt loggsekvensnummer. Mer information finns i Förstå LSN-kolumnvärdena, senare i den här artikeln.
last_commit_lsn numerisk(25,0) Verkligt loggsekvensnummer som motsvarar den senaste incheckningsposten i transaktionsloggen.

I den primära databasen motsvarar detta den senaste incheckningsposten som bearbetats. Rader för sekundära databaser visar loggsekvensnumret som den sekundära repliken skickade till den primära repliken.
På den sekundära repliken är detta den sista incheckningsposten som gjordes om.
last_commit_time datetime Tid som motsvarar den senaste incheckningsposten.

I den sekundära databasen är den här gången samma som i den primära databasen.

På den primära repliken visar varje sekundär databasrad den tid då den sekundära repliken som är värd för den sekundära databasen rapporteras tillbaka till den primära repliken. Tidsskillnaden mellan den primära databasraden och en viss sekundär databasrad representerar ungefär mål för återställningspunkt (RPO), förutsatt att processen för att göra om fångas upp och att förloppet rapporterades tillbaka till den primära repliken av den sekundära repliken. Mer information finns i Beräkning av sekundär databas-RPO
low_water_mark_for_ghosts bigint Ett monotont ökande tal för databasen som anger ett lågvattenmärke som används av ghost och beständig versionslagring på den primära databasen. Om en skrivarbetsbelastning körs på den primära men det här talet inte ökar med tiden innebär det att rensningen av spök- och beständiga versionsarkiv kan fördröjas. För att avgöra vilka spökrader och vilka radversioner som ska rensas använder den primära repliken det minsta värdet för den här kolumnen för den här databasen för alla repliker (inklusive den primära repliken).
secondary_lag_seconds bigint Antalet sekunder som den sekundära repliken ligger bakom den primära repliken under synkroniseringen.

På den primära repliken beräknas synkroniseringsfördröjningen (fördröjning) för varje sekundär databas som antalet sekunder sedan härdningen av det tidigaste härdade LSN på den primära repliken som ännu inte har härdats på den sekundära repliken. Det här värdet visas som 0 om dataflytten pausas. Dataflytten måste vara i ett icke-pausat tillstånd för att det här värdet ska visa aktiv fördröjning.

gäller för: SQL Server 2016 (13.x) och senare versioner.

Förstå LSN-kolumnvärdena

Värdena för end_of_log_lsn, last_hardened_lsn, last_received_lsn, last_sent_lsn, recovery_lsnoch truncation_lsn kolumner är inte faktiska loggsekvensnummer (LSN). I stället återspeglar vart och ett av dessa värden ett loggblocks-ID som är vadderat med nollor.

end_of_log_lsn, last_hardened_lsnoch recovery_lsn är tömnings-LSN. Till exempel anger last_hardened_lsn början av nästa block förbi de block som redan finns på disken. Så alla LSN mindre värdet för last_hardened_lsn är på disk. LSN:er som är större än eller lika med det här värdet rensas inte.

Av de LSN-värden som returneras av sys.dm_hadr_database_replica_statesär endast last_redone_lsn ett verkligt LSN.

Behörigheter

SQL Server 2019 (15.x) och tidigare versioner kräver VIEW SERVER STATE behörighet på servern.

SQL Server 2022 (16.x) och senare versioner kräver VIEW SERVER PERFORMANCE STATE behörighet på servern.