sys.dm_hadr_database_replica_states (Transact-SQL)
Restituisce una riga per ogni database che partecipa a un gruppo di disponibilità AlwaysOn per il quale l'istanza locale di SQL Server ospita una replica di disponibilità. Questa DMV espone informazioni sullo stato sia sulle repliche primarie sia su quelle secondarie. Su una replica secondaria, questa vista restituisce una riga per ogni database secondario sull'istanza del server. Sulla replica primaria, questa vista restituisce una riga per ogni database primario e una riga aggiuntiva per il database secondario corrispondente.
Importante |
---|
A seconda dell'azione e degli stati di livello superiore, è possibile che le informazioni sullo stato del database non siano disponibili o non aggiornate. I valori hanno inoltre pertinenza esclusivamente locale. Ad esempio, sulla replica primaria il valore della colonna last_hardened_lsn riflette le informazioni su un database secondario attualmente disponibile per la replica primaria, non l'effettivo valore LSN finale di cui la replica secondaria potrebbe disporre. |
Nome colonna |
Tipo di dati |
Descrizione (sulla replica primaria) |
||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
database_id |
int |
Identificatore del database, univoco in un'istanza di SQL Server. Si tratta dello stesso valore visualizzato nella vista del catalogo sys.databases. |
||||||||||||||||
group_id |
uniqueidentifier |
Identificatore del gruppo di disponibilità a cui appartiene il database. |
||||||||||||||||
replica_id |
uniqueidentifier |
Identificatore della replica di disponibilità all'interno del gruppo di disponibilità. |
||||||||||||||||
group_database_id |
uniqueidentifier |
Identificatore del database nel gruppo di disponibilità. L'identificatore è identico su ogni replica a cui è stato aggiunto questo database. |
||||||||||||||||
is_local |
bit |
Se il database di disponibilità è locale, uno di: 0 = Il database non è locale rispetto all'istanza di SQL Server. 1 = Il database è locale rispetto all'istanza del server. |
||||||||||||||||
synchronization_state |
tinyint |
Stato dello spostamento dei dati, uno di:
|
||||||||||||||||
synchronization_state_desc |
nvarchar(60) |
Descrizione dello stato di spostamento dei dati, uno di: NOT SYNCHRONIZING SYNCHRONIZING SYNCHRONIZED REVERTING INITIALIZING |
||||||||||||||||
is_commit_participant |
bit |
0 = il commit della transazione non è sincronizzato rispetto a questo database. 1 = il commit della transazione è sincronizzato rispetto a questo database. Per un database in una replica di disponibilità con commit asincrono, questo valore è sempre 0. Per un database in una replica di disponibilità con commit sincrono, questo valore è preciso solo nel database primario. |
||||||||||||||||
synchronization_health |
tinyint |
Riflette l'intersezione dello stato di sincronizzazione di un database di cui è stato creato un join al gruppo di disponibilità nella replica di disponibilità e la modalità di disponibilità della relativa replica (modalità con commit sincrono o asincrono), uno di:
|
||||||||||||||||
synchronization_health_desc |
nvarchar(60) |
Descrizione del valore synchronization_health del database di disponibilità. NOT_HEALTHY PARTIALLY_HEALTHY HEALTHY |
||||||||||||||||
database_state |
tinyint |
0 = Online 1 = Ripristino in corso 2 = Recupero in corso 3 = Recupero in corso 4 = Sospetto 5 = Emergenza 6 = Offline
|
||||||||||||||||
database_state_desc |
nvarchar(60) |
Descrizione del valore database_state della replica di disponibilità. ONLINE RESTORING RECOVERING RECOVERY_PENDING SUSPECT EMERGENCY OFFLINE
|
||||||||||||||||
is_suspended |
bit |
Stato del database, uno di: 0 = Ripreso 1 = Sospeso |
||||||||||||||||
suspend_reason |
tinyint |
Se il database è sospeso, il motivo dello stato sospeso, uno di: 0 = Azione utente 1 = Sospensione da parte del partner 2 = Rollforward 3 = Acquisizione 4 = Applicazione 5 = Riavvio 6 = Rollback 7 = Riconvalida 8 = Errore nel calcolo del punto di sincronizzazione della replica secondaria |
||||||||||||||||
suspend_reason_desc |
nvarchar(60) |
Descrizione del motivo dello stato sospeso del database, uno di: SUSPEND_FROM_USER = Un utente ha sospeso manualmente lo spostamento di dati SUSPEND_FROM_PARTNER = La replica di database viene sospesa dopo un failover forzato SUSPEND_FROM_REDO = Si è verificato un errore durante la fase di rollforward SUSPEND_FROM_APPLY = Si è verificato un errore durante la scrittura del log nel file (vedere il log degli errori) SUSPEND_FROM_CAPTURE = Si è verificato un errore durante l'acquisizione del log nella replica primaria SUSPEND_FROM_RESTART = La replica di database è stata sospesa prima del riavvio del database (vedere il log degli errori) SUSPEND_FROM_UNDO = Si è verificato un errore durante la fase di rollback (vedere il log degli errori) SUSPEND_FROM_REVALIDATION = Durante la riconnessione è stata rilevata una mancata corrispondenza delle modifiche del log (vedere il log degli errori) SUSPEND_FROM_XRF_UPDATE = Impossibile trovare il punto di log comune (vedere il log degli errori) |
||||||||||||||||
recovery_lsn |
numeric(25,0) |
Nella replica primaria, la fine del log delle transazioni prima della scrittura di qualsiasi nuovo record di log da parte del database primario dopo il failover o il recupero. Se per un database secondario specificato questo valore è minore del valore LSN finale corrente (last_hardened_lsn), recovery_lsn rappresenta il valore in base al quale è necessario risincronizzare il database secondario (ripristino e reinizializzazione). Se questo valore è maggiore o uguale al valore LSN finale corrente, la risincronizzazione non è necessaria e non viene eseguita. recovery_lsn riflette un ID del blocco di log riempito con zeri. Non si tratta di un numero di sequenza del file di log (LSN). Per informazioni sulla derivazione di questo valore, vedere Informazioni sui valori delle colonne LSN, più avanti in questo argomento. |
||||||||||||||||
truncation_lsn |
numeric(25,0) |
Nella replica primaria, per il database primario, riflette l'LSN di troncamento del log minimo in tutti i database secondari corrispondenti. Se il troncamento del log locale è bloccato, ad esempio da un'operazione di backup, questo LSN potrebbe essere maggiore di quello di troncamento locale. Per un database secondario specificato, riflette il punto di troncamento del database in questione. truncation_lsn riflette un ID del blocco di log riempito con zeri. Non si tratta di un numero di sequenza del file di log (LSN). |
||||||||||||||||
last_sent_lsn |
numeric(25,0) |
Identificatore del blocco di log che indica il punto fino a cui tutti i blocchi di log sono stati inviati dal database primario. ID del blocco di log successivo che verrà inviato, anziché l'ID del blocco di log inviato più di recente. last_sent_lsn riflette un ID del blocco di log riempito con zeri. Non si tratta di un numero di sequenza del file di log effettivo. |
||||||||||||||||
last_sent_time |
datetime |
Ora di invio dell'ultimo blocco di log. |
||||||||||||||||
last_received_lsn |
numeric(25,0) |
ID del blocco di log che identifica il punto fino a cui tutti i blocchi di log sono stati ricevuti dalla replica secondaria che ospita questo database secondario. last_received_lsn riflette un ID del blocco di log riempito con zeri. Non si tratta di un numero di sequenza del file di log (LSN). |
||||||||||||||||
last_received_time |
datetime |
Ora in cui è stato letto l'ID del blocco di log nell'ultimo messaggio ricevuto sulla replica secondaria. |
||||||||||||||||
last_hardened_lsn |
numeric(25,0) |
Avvio del blocco del log in cui sono contenuti i record di log dell'LSN ultima finalizzazione in un database secondario. In un database primario con commit asincrono o in un database con commit sincrono i cui criteri correnti si riferiscono a un ritardo, il valore è NULL. Per altri database primari con commit sincrono, last_hardened_lsn indica il valore minimo dell'LSN finalizzato in tutti i database secondari.
|
||||||||||||||||
last_hardened_time |
datetime |
In un database secondario, ora dell'identificatore del blocco di log per l'LSN ultima finalizzazione (last_hardened_lsn). In un database primario, riflette l'ora corrispondente all'LSN minimo finalizzato. |
||||||||||||||||
last_redone_lsn |
numeric(25,0) |
Numero di sequenza del file di log (LSN) effettivo dell'ultimo record di log di cui è stato eseguito il rollforward nel database secondario. last_redone_lsn è sempre minore di last_hardened_lsn. |
||||||||||||||||
last_redone_time |
datetime |
Ora del rollforward dell'ultimo record di log sul database secondario. |
||||||||||||||||
log_send_queue_size |
bigint |
Quantità di record di log del database primario che non è stata inviata ai database secondari, espressa in KB. |
||||||||||||||||
log_send_rate |
bigint |
Velocità alla quale i record di log vengono inviati ai database secondari, espressa in KB/secondo. |
||||||||||||||||
redo_queue_size |
bigint |
Quantità di record di log nei file di log della replica secondaria che non sono ancora stati sottoposti a rollforward (in KB). |
||||||||||||||||
redo_rate |
bigint |
Velocità alla quale viene eseguito il rollforward dei record di log in un database secondario specificato, espressa in KB/secondo. |
||||||||||||||||
filestream_send_rate |
bigint |
Velocità alla quale i file FILESTREAM vengono inviati alla replica secondaria (in KB/secondo). |
||||||||||||||||
end_of_log_lsn |
numeric(25,0) |
Fine locale dell'LSN del log. LSN effettivo che corrisponde all'ultimo record di log nella cache di log sui database primario e secondari. Nella replica primaria, le righe secondarie riflettono la fine dell'LSN del log degli ultimi messaggi di stato inviati dalle repliche secondarie alla replica primaria. end_of_log_lsn riflette un ID del blocco di log riempito con zeri. Non si tratta di un numero di sequenza del file di log (LSN). Per altre informazioni, vedere Informazioni sui valori delle colonne LSN più avanti in questo argomento. |
||||||||||||||||
last_commit_lsn |
Numeric(25,0) |
Numero di sequenza del file di log effettivo che corrisponde all'ultimo record di commit nel log delle transazioni. Sul database primario corrisponde all'ultimo record di commit elaborato. Nelle righe per i database secondari viene mostrato il numero di sequenza del file di log (LSN) inviato dalla replica secondaria alla replica primaria. Sulla replica secondaria si tratta dell'ultimo record di commit di cui è stato eseguito il rollforward. |
||||||||||||||||
last_commit_time |
datetime |
Ora che corrisponde all'ultimo record di commit. Sul database secondario, l'ora equivale a quella sul database primario. Sulla replica primaria ogni riga del database secondario contiene l'ora in cui la replica secondaria che ospita il database secondario ha riferito alla replica primaria. La differenza oraria tra la riga del database primario e la riga di un database secondario rappresenta approssimativamente l'obiettivo del tempo di recupero (RPO), presupponendo che il processo di rollforward venga intercettato e che lo stato di avanzamento sia stato riferito alla replica primaria da parte della replica secondaria. |
||||||||||||||||
low_water_mark_for_ghosts |
bigint |
Numero a incremento progressivo costante per il database che indica un limite minimo usato dall'attività di pulizia dei record fantasma sul database primario. Se questo numero non aumenta nel tempo, implica che la pulizia dei record fantasma potrebbe non avvenire. Per decidere quali righe fantasma pulire, la replica primaria utilizza il valore minimo di questa colonna per questo database in tutte le repliche di disponibilità, inclusa quella primaria. |
Informazioni sui valori delle colonne LSN
I valori delle colonne end_of_log_lsn, last_hardened_lsn, last_received_lsn, last_sent_lsn, recovery_lsn e truncation_lsn non sono numeri di sequenza del file di log (LSN) effettivi. Ognuno di questi valori riflette invece un ID del blocco di log riempito con zeri.
end_of_log_lsn, last_hardened_lsn e recovery_lsn sono LSN scaricati. last_hardened_lsn, ad esempio, indica l'inizio del blocco successivo oltre i blocchi già presenti su disco. Pertanto, qualsiasi LSN < del valore di last_hardened_lsn si trova su disco. Gli LSN che sono >= a questo valore non vengono scaricati.
Dei valori LSN restituiti da sys.dm_hadr_database_replica_states, solo last_redone_lsn è un LSN effettivo.
Sicurezza
Autorizzazioni
È richiesta l'autorizzazione VIEW SERVER STATE per il server.