Delen via


sys.dm_hadr_database_replica_states (Transact-SQL)

van toepassing op:SQL ServerAzure SQL Managed Instance

Retourneert een rij voor elke database die deelneemt aan een AlwaysOn-beschikbaarheidsgroep waarvoor het lokale exemplaar van SQL Server een beschikbaarheidsreplica host. Deze dynamische beheerweergave bevat statusinformatie over zowel de primaire als secundaire replica's. Op een secundaire replica retourneert deze weergave een rij voor elke secundaire database op het serverexemplaren. Op de primaire replica retourneert deze weergave een rij voor elke primaire database en een extra rij voor de bijbehorende secundaire database.

Belangrijk

Afhankelijk van de actie en statussen op een hoger niveau, is de databasestatusgegevens mogelijk niet beschikbaar of verouderd. Bovendien hebben de waarden alleen lokale relevantie. Op de primaire replica geeft de waarde van de kolom last_hardened_lsn bijvoorbeeld de informatie weer over een bepaalde secundaire database die momenteel beschikbaar is voor de primaire replica, niet het werkelijke geharde logboekreeksnummer (LSN) dat de secundaire replica mogelijk momenteel heeft.

Kolomnaam Gegevenstype Beschrijving (op primaire replica)
database_id Id van de database, uniek binnen een exemplaar van SQL Server. Dit is dezelfde waarde als die wordt weergegeven in de sys.databases catalogusweergave.
group_id uniqueidentifier- Id van de beschikbaarheidsgroep waartoe de database behoort.
replica_id uniqueidentifier- Id van de beschikbaarheidsreplica binnen de beschikbaarheidsgroep.
group_database_id uniqueidentifier- Id van de database binnen de beschikbaarheidsgroep. Deze id is identiek op elke replica waaraan deze database is gekoppeld.
is_local bit Of de beschikbaarheidsdatabase lokaal is, een van de volgende:

0 = De database is niet lokaal voor het SQL Server-exemplaar.
1 = De database is lokaal voor het serverexemplaren.
is_primary_replica bit Retourneert 1 als de replica primair is of 0 als het een secundaire replica is.

Van toepassing op: SQL Server 2014 (12.x) en latere versies.
synchronization_state kleine Status van gegevensverplaatsing, een van de volgende waarden.

0 = Niet synchroniseren. Voor een primaire database geeft u aan dat de database niet gereed is om het transactielogboek te synchroniseren met de bijbehorende secundaire databases. Voor een secundaire database geeft deze waarde aan dat de database geen logboeksynchronisatie heeft gestart vanwege een verbindingsprobleem, wordt onderbroken of overgangsstatussen doorloopt tijdens het opstarten of een rolswitch.

1 = Synchroniseren. Voor een primaire database geeft u aan dat de database gereed is om een scanaanvraag van een secundaire database te accepteren. Voor een secundaire database geeft u aan dat actieve gegevensverplaatsing plaatsvindt voor de database.

2 = Gesynchroniseerd. Een primaire database toont SYNCHRONIZED in plaats van SYNCHRONIZING. Een secundaire database met synchrone doorvoer wordt gesynchroniseerd wanneer in de lokale cache wordt opgegeven dat de database gereed is voor failover en wordt gesynchroniseerd.

3 = Terugdraaien. Geeft de fase in het ongedaan maken aan wanneer een secundaire database actief pagina's ophaalt uit de primaire database.

Waarschuwing: Wanneer een database op een secundaire replica de status REVERTING heeft, blijft de database in een toestand waarin de database niet kan worden gestart als een primaire database. De database moet opnieuw verbinding maken als een secundaire database of u moet nieuwe logboekrecords toepassen vanuit een logboekback-up.

4 = Initialiseren. Geeft de fase van ongedaan maken aan wanneer het transactielogboek dat is vereist voor een secundaire database om de ongedaan maken LSN in te halen, wordt verzonden en beveiligd op een secundaire replica.

Waarschuwing: Wanneer een database op een secundaire replica de status INITIALIZING heeft, blijft de database in een toestand waarin de database niet kan worden gestart als een primaire database. De database moet opnieuw verbinding maken als een secundaire database of u moet nieuwe logboekrecords toepassen vanuit een logboekback-up.
synchronization_state_desc nvarchar(60) Beschrijving van de status van gegevensverplaatsing, een van:

NOT SYNCHRONIZING
SYNCHRONIZING
SYNCHRONIZED
REVERTING
INITIALIZING
is_commit_participant bit 0 = Transactiedoorvoering wordt niet gesynchroniseerd met betrekking tot deze database.

1 = Transactiedoorvoering wordt gesynchroniseerd met betrekking tot deze database.

Voor een database op een asynchrone doorvoerbeschikbaarheidsreplica is deze waarde altijd 0.

Voor een database op een synchrone doorvoerbeschikbaarheidsreplica is deze waarde alleen nauwkeurig voor de primaire database.
synchronization_health kleine Geeft het snijpunt weer van de synchronisatiestatus van een database die is gekoppeld aan de beschikbaarheidsgroep op de beschikbaarheidsreplica en de beschikbaarheidsmodus van de beschikbaarheidsreplica (synchroon doorvoeren of asynchrone doorvoermodus). Dit kan een van de volgende waarden zijn.

0 = Niet in orde. De synchronization_state van de database is 0 (NOT SYNCHRONIZING).

1 = Gedeeltelijk gezond. Een database op een synchrone doorvoerbeschikbaarheidsreplica wordt als gedeeltelijk in orde beschouwd als synchronization_state is 1 (SYNCHRONIZING).

2 = In orde. Een database op een synchrone doorvoerbeschikbaarheidsreplica wordt als in orde beschouwd als synchronization_state is 2 (SYNCHRONIZED) en een database op een beschikbaarheidsreplica met asynchrone doorvoer wordt beschouwd als in orde als synchronization_state1 (SYNCHRONIZING).
synchronization_health_desc nvarchar(60) Beschrijving van de synchronization_health van de beschikbaarheidsdatabase.

NOT_HEALTHY
PARTIALLY_HEALTHY
HEALTHY
database_state kleine 0 = Online
1 = Herstellen
2 = Herstellen
3 = Herstel in behandeling
4 = Verdachte
5 = Noodgeval
6 = Offline

Opmerking: hetzelfde als state kolom in sys.databases.
database_state_desc nvarchar(60) Beschrijving van de database_state van de beschikbaarheidsreplica.

ONLINE
RESTORING
RECOVERING
RECOVERY_PENDING
SUSPECT
EMERGENCY
OFFLINE

Opmerking: hetzelfde als state_desc kolom in sys.databases.
is_suspended bit Databasestatus, een van de volgende:

0 = Hervat
1 = Onderbroken
suspend_reason kleine Als de database is onderbroken, is de reden voor de onderbroken status een van de volgende:

0 = Gebruikersactie
1 = Onderbreken van partner
2 = Opnieuw
3 = Vastleggen
4 = Toepassen
5 = Opnieuw opstarten
6 = Ongedaan maken
7 = Opnieuwvalidatie
8 = Fout in de berekening van het synchronisatiepunt secundaire replica
suspend_reason_desc nvarchar(60) Beschrijving van de reden van de onderbroken status van de database, een van:

SUSPEND_FROM_USER = Een gebruiker heeft de gegevensverplaatsing handmatig opgeschort

SUSPEND_FROM_PARTNER = De databasereplica wordt onderbroken na een geforceerde failover

SUSPEND_FROM_REDO = Er is een fout opgetreden tijdens de herfase

SUSPEND_FROM_APPLY = Er is een fout opgetreden bij het schrijven van het logboek naar bestand (zie foutenlogboek)

SUSPEND_FROM_CAPTURE = Er is een fout opgetreden tijdens het vastleggen van het logboek op de primaire replica

SUSPEND_FROM_RESTART = De databasereplica is onderbroken voordat de database opnieuw werd opgestart (zie het foutenlogboek)

SUSPEND_FROM_UNDO = Er is een fout opgetreden tijdens de fase ongedaan maken (zie foutenlogboek)

SUSPEND_FROM_REVALIDATION = Logboekwijziging komt niet overeen bij opnieuw verbinding maken (zie foutenlogboek)

SUSPEND_FROM_XRF_UPDATE = Kan het algemene logboekpunt niet vinden (zie foutenlogboek)
recovery_lsn numeriek(25,0) Op de primaire replica schrijft het einde van het transactielogboek voordat de primaire database nieuwe logboekrecords schrijft na herstel of failover. Als voor een bepaalde secundaire database deze waarde kleiner is dan de huidige geharde LSN (last_hardened_lsn), is recovery_lsn de waarde waarnaar deze secundaire database opnieuw moet synchroniseren (dat wil gezegd, om terug te keren naar en opnieuw te initialiseren). Als deze waarde groter is dan of gelijk is aan de huidige geharde LSN, is hersynchronisatie niet nodig en zou het niet gebeuren.

De recovery_lsn weerspiegelt een logboekblok-id die is opgevuld met nullen. Het is geen echte LSN. Zie Inzicht in de LSN-kolomwaardenverderop in dit artikel voor meer informatie over hoe deze waarde wordt afgeleid.
truncation_lsn numeriek(25,0) Op de primaire replica geeft voor de primaire database de minimale afkapping van logboeken weer voor alle bijbehorende secundaire databases. Als het afkappen van lokale logboeken wordt geblokkeerd (bijvoorbeeld door een back-upbewerking), is deze LSN mogelijk hoger dan de lokale afkappingSN.

Voor een bepaalde secundaire database wordt het afkappingspunt van die database weergegeven.
truncation_lsn weerspiegelt een logboekblok-id die is opgevuld met nullen. Het is geen werkelijk volgnummer voor logboeken.
last_sent_lsn numeriek(25,0) Wanneer u een query uitvoert op de primaire replica, wordt last_sent_lsn gerapporteerd voor elke secundaire replicadatabaserij. De logboekblok-id die het punt aangeeft waartoe alle logboekblokken zijn verzonden door de primaire. Dit is de id van het volgende logboekblok dat wordt verzonden, in plaats van de id van het laatst verzonden logboekblok.

last_sent_lsn weerspiegelt een logboekblok-id die is opgevuld met nullen. Het is geen werkelijk volgnummer voor logboeken.
last_sent_time datum/tijd- Wanneer u een query uitvoert op de primaire replica, wordt last_sent_time gerapporteerd voor elke secundaire replicadatabaserij. Tijdstip waarop het laatste logboekblok is verzonden.
last_received_lsn numeriek(25,0) Wanneer u een query uitvoert op een secundaire replica, wordt last_received_lsn gerapporteerd voor de rij van de lokale secundaire replicadatabase. Logboekblok-id die het punt aangeeft waartoe alle logboekblokken zijn ontvangen door de secundaire replica die als host fungeert voor deze secundaire database.

De last_received_lsn weerspiegelt een logboekblok-id die is opgevuld met nullen. Het is geen werkelijk volgnummer voor logboeken.
last_received_time datum/tijd- Wanneer u een query uitvoert op een secundaire replica, wordt last_received_time gerapporteerd voor de rij van de lokale secundaire replicadatabase. De tijd waarop de logboekblok-id in het laatste ontvangen bericht is gelezen op de secundaire replica.
last_hardened_lsn numeriek(25,0) Begin van het logboekblok met de logboekrecords van de laatst beperkte LSN op een secundaire database.

Op een asynchrone primaire database of op een synchrone doorvoerdatabase waarvan het huidige beleid is delay, wordt de waarde NULL. Voor andere synchrone primaire databases geeft last_hardened_lsn het minimum aan van de beperkte LSN voor alle secundaire databases.

Opmerking: de last_hardened_lsn een logboekblok-id weerspiegelt die is opgevuld met nullen. Het is geen werkelijk volgnummer voor logboeken. Zie De LSN-kolomwaarden begrijpenverderop in dit artikel voor meer informatie.
last_hardened_time datum/tijd- Op een secundaire database, de tijd van de logboekblok-id voor de laatst beperkte LSN (last_hardened_lsn). In een primaire database geeft u de tijd weer die overeenkomt met minimaal beperkte LSN.
last_redone_lsn numeriek(25,0) Het werkelijke logboekvolgordenummer van de laatste logboekrecord die opnieuw is uitgevoerd op de secundaire database. De last_redone_lsn is altijd minder dan last_hardened_lsn.
last_redone_time datum/tijd- Tijdstip waarop de laatste logboekrecord opnieuw is uitgevoerd op de secundaire database.
log_send_queue_size grote Aantal logboekrecords van de primaire database die niet naar de secundaire databases is verzonden, in kilobytes (KB).
log_send_rate grote Gemiddelde snelheid waarmee het primaire replica-exemplaar gegevens heeft verzonden tijdens de laatste actieve periode, in kilobytes (KB)/seconde.
redo_queue_size grote Het aantal logboekrecords in de logboekbestanden van de secundaire replica die nog niet opnieuw worden uitgevoerd, in kilobytes (KB).
redo_rate grote Gemiddelde snelheid waarmee de logboekrecords opnieuw worden uitgevoerd op een bepaalde secundaire database, in kilobytes (KB)/seconde.

redo_rate wordt berekend door het totale aantal logboekbytes opnieuw te delen sinds het opstarten van de database-engine met de tijdsduur waarop de hero actief werd uitgevoerd, in plaats van door de verstreken tijd. Omdat de redo mogelijk niet continu wordt uitgevoerd, kan de resulterende waarde afwijken (hoger) dan de waarde van Database Replica:Redone Bytes/sec prestatiemeteritem.
filestream_send_rate grote Hiermee geeft u de snelheid op waarmee de FILESTREAM-bestanden naar de secundaire replica worden verzonden, in kilobytes (KB)/seconde.
end_of_log_lsn numeriek(25,0) Lokaal einde van logboek LSN. Werkelijke LSN die overeenkomt met de laatste logboekrecord in de logboekcache op de primaire en secundaire databases. Op de primaire replica geven de secundaire rijen het einde van logboek-LSN weer van de meest recente voortgangsberichten die de secundaire replica's naar de primaire replica hebben verzonden.

end_of_log_lsn weerspiegelt een logboekblok-id die is opgevuld met nullen. Het is geen werkelijk volgnummer voor logboeken. Zie De LSN-kolomwaarden begrijpenverderop in dit artikel voor meer informatie.
last_commit_lsn numeriek(25,0) Het werkelijke volgnummer van het logboek dat overeenkomt met de laatste doorvoerrecord in het transactielogboek.

In de primaire database komt dit overeen met de laatste doorvoeringsrecord die is verwerkt. Rijen voor secundaire databases geven het logboekvolgordenummer weer dat de secundaire replica naar de primaire replica heeft verzonden.
Op de secundaire replica is dit de laatste doorvoerrecord die opnieuw is uitgevoerd.
last_commit_time datum/tijd- Tijd die overeenkomt met de laatste doorvoerrecord.

In de secundaire database is dit keer hetzelfde als in de primaire database.

Op de primaire replica geeft elke secundaire databaserij de tijd weer waarop de secundaire replica die als host fungeert voor de secundaire database die is gerapporteerd aan de primaire replica. Het verschil in tijd tussen de rij van de primaire database en een bepaalde secundaire databaserij vertegenwoordigt ongeveer het beoogde herstelpunt (RPO), ervan uitgaande dat het hero-proces wordt opgevangen en dat de voortgang door de secundaire replica is gerapporteerd aan de primaire replica.
low_water_mark_for_ghosts grote Een monotonisch toenemend aantal voor de database dat aangeeft dat een laag watermarkering wordt gebruikt door ghost en permanente versieopslag opschonen op de primaire database. Als een schrijfworkload wordt uitgevoerd op de primaire, maar dit aantal na verloop van tijd niet toeneemt, betekent dit dat ghost- en permanente versieopslagopruiming mogelijk worden opgeslagen. Als u wilt bepalen welke spookrijen en welke rijversies moeten worden opgeschoond, gebruikt de primaire replica de minimumwaarde van deze kolom voor deze database voor alle replica's (inclusief de primaire replica).
secondary_lag_seconds grote Het aantal seconden dat de secundaire replica zich achter de primaire replica bevindt tijdens de synchronisatie.

Op de primaire replica wordt de synchronisatievertraging (vertraging) voor elke secundaire database berekend als het aantal seconden sinds de beveiliging van de vroegste vaste LSN op de primaire replica die nog moet worden beveiligd op de secundaire replica. Deze waarde wordt weergegeven als 0 als de gegevensverplaatsing is onderbroken. De gegevensverplaatsing moet een niet-onderbroken status hebben om deze waarde actieve vertraging weer te geven.

van toepassing op: SQL Server 2016 (13.x) en latere versies.

Inzicht in de LSN-kolomwaarden

De waarden van de end_of_log_lsn, last_hardened_lsn, last_received_lsn, last_sent_lsn, recovery_lsnen truncation_lsn kolommen zijn geen werkelijke logboekreeksnummers (LSN's). In plaats daarvan weerspiegelt elk van deze waarden een logboekblok-id die is opgevuld met nullen.

end_of_log_lsn, last_hardened_lsnen recovery_lsn zijn leeggemaakte LSN's. last_hardened_lsn geeft bijvoorbeeld het begin aan van het volgende blok voorbij de blokken die zich al op de schijf bevinden. Dus elke LSN minder de waarde van last_hardened_lsn bevindt zich op schijf. LSN's die groter zijn dan of gelijk zijn aan deze waarde, worden niet leeggemaakt.

Van de LSN-waarden die door sys.dm_hadr_database_replica_statesworden geretourneerd, is slechts last_redone_lsn een echte LSN.

Machtigingen

SQL Server 2019 (15.x) en eerdere versies vereisen VIEW SERVER STATE machtiging op de server.

VOOR SQL Server 2022 (16.x) en latere versies is VIEW SERVER PERFORMANCE STATE machtiging op de server vereist.