sys.dm_hadr_database_replica_states (Transact-SQL)
gäller för:SQL Server
Azure 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 = Online1 = Återställa2 = Återställning3 = Återställning väntar4 = Misstänkt5 = Nödläge6 = OfflineObs! 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 = Återupptas1 = Pausad |
suspend_reason |
pytteliten | Om databasen är pausad beror orsaken till det inaktiverade tillståndet, något av:0 = Användaråtgärd1 = Pausa från partner2 = Gör om3 = Capture4 = Använd5 = Starta om6 = Ångra7 = Revalidation8 = 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 manuelltSUSPEND_FROM_PARTNER = Databasrepliken pausas efter en tvingad redundansväxlingSUSPEND_FROM_REDO = Ett fel uppstod under omgörningsfasenSUSPEND_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 replikenSUSPEND_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_lsn
och 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_lsn
och 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.