sys.dm_hadr_database_replica_states (Transact-SQL)
van toepassing op:SQL Server
Azure 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_state 1 (SYNCHRONIZING ). |
synchronization_health_desc |
nvarchar(60) | Beschrijving van de synchronization_health van de beschikbaarheidsdatabase.NOT_HEALTHY PARTIALLY_HEALTHY HEALTHY |
database_state |
kleine |
0 = Online1 = Herstellen2 = Herstellen3 = Herstel in behandeling4 = Verdachte5 = Noodgeval6 = OfflineOpmerking: 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 = Hervat1 = Onderbroken |
suspend_reason |
kleine | Als de database is onderbroken, is de reden voor de onderbroken status een van de volgende:0 = Gebruikersactie1 = Onderbreken van partner2 = Opnieuw3 = Vastleggen4 = Toepassen5 = Opnieuw opstarten6 = Ongedaan maken7 = Opnieuwvalidatie8 = 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 opgeschortSUSPEND_FROM_PARTNER = De databasereplica wordt onderbroken na een geforceerde failoverSUSPEND_FROM_REDO = Er is een fout opgetreden tijdens de herfaseSUSPEND_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 replicaSUSPEND_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_lsn
en 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_lsn
en 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_states
worden 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.