sys.dm_hadr_database_replica_states (Transact-SQL)
Se aplica a: SQL Server Azure SQL Managed Instance
Devuelve una fila por cada base de datos que participa en un grupo de disponibilidad AlwaysOn para el que la instancia local de SQL Server hospeda una réplica de disponibilidad. Esta vista de administración dinámica expone información de estado en las réplicas principal y secundaria. En una réplica secundaria, esta vista devuelve una fila por cada base de datos secundaria de la instancia de servidor. En la réplica principal, esta vista devuelve una fila para cada base de datos principal y una fila adicional para la base de datos secundaria correspondiente.
Importante
Según la acción y los estados de nivel superior, la información de estado de la base de datos podría no estar disponible o no estar actualizada. Además, los valores solo tienen relevancia local. Por ejemplo, en la réplica principal, el valor de la last_hardened_lsn
columna refleja la información sobre una base de datos secundaria determinada que está disponible actualmente para la réplica principal, no el número de secuencia de registro protegido real (LSN) que la réplica secundaria podría tener actualmente.
Nombre de la columna | Tipo de datos | Descripción (en la réplica principal) |
---|---|---|
database_id |
int | Identificador de la base de datos, único en una instancia de SQL Server. Este es el mismo valor que se muestra en la vista de catálogo sys.databases . |
group_id |
uniqueidentifier | Identificador del grupo de disponibilidad al que pertenece la base de datos. |
replica_id |
uniqueidentifier | Identificador de la réplica de disponibilidad dentro del grupo de disponibilidad. |
group_database_id |
uniqueidentifier | Identificador de la base de datos dentro del grupo de disponibilidad. Este identificador es idéntico en cada réplica al que está unido esta base de datos. |
is_local |
bit | Si la base de datos de disponibilidad es local, uno de los siguientes:0 = La base de datos no es local para la instancia de SQL Server.1 = La base de datos es local para la instancia del servidor. |
is_primary_replica |
bit | Devuelve 1 si la réplica es principal o 0 si es una réplica secundaria.Se aplica a: SQL Server 2014 (12.x) y versiones posteriores. |
synchronization_state |
tinyint | Estado de movimiento de datos, uno de los siguientes valores.0 = Sin sincronizar. Para una base de datos principal, indica que la base de datos no está lista para sincronizar su registro de transacciones con las bases de datos secundarias correspondientes. En el caso de una base de datos secundaria, este valor indica que la base de datos no ha iniciado la sincronización de registros debido a un problema de conexión, se está suspendiendo o está pasando por estados de transición durante el inicio o un modificador de rol.1 = Sincronización. En una base de datos principal, indica que la base de datos está lista para aceptar una solicitud de examen de una base de datos secundaria. En una base de datos secundaria, indica que se está produciendo un movimiento de datos activo para la base de datos.2 = Sincronizado. Una base de datos principal se muestra SYNCHRONIZED en lugar de SYNCHRONIZING . Una base de datos secundaria de confirmación sincrónica se muestra como sincronizado cuando la memoria caché local indica que la base de datos está lista para la conmutación por error y está en proceso de sincronización.3 = Reversión. Indica la fase en el proceso de reversión cuando una base de datos secundaria está obteniendo activamente páginas de la base de datos principal.Precaución: cuando una base de datos de una réplica secundaria está en estado REVERTING , forzar la conmutación por error a la réplica secundaria deja la base de datos en un estado en el que no se puede iniciar como base de datos principal. La base de datos debe volver a conectarse como base de datos secundaria o debe aplicar nuevos registros de registro desde una copia de seguridad de registros.4 = Inicialización. Indica la fase de reversión cuando el registro de transacciones necesario para la puesta al día de una base de datos secundaria respecto al LSN de reversión se envía y se protege en una réplica secundaria.Precaución: cuando una base de datos de una réplica secundaria está en estado INITIALIZING , forzar la conmutación por error a la réplica secundaria deja la base de datos en un estado en el que no se puede iniciar como base de datos principal. La base de datos debe volver a conectarse como base de datos secundaria o debe aplicar nuevos registros de registro desde una copia de seguridad de registros. |
synchronization_state_desc |
nvarchar(60) | Descripción del estado de movimiento de datos, uno de los siguientes:NOT SYNCHRONIZING SYNCHRONIZING SYNCHRONIZED REVERTING INITIALIZING |
is_commit_participant |
bit | 0 = La confirmación de transacción no se sincroniza con respecto a esta base de datos.1 = La confirmación de transacción se sincroniza con respecto a esta base de datos.Para una base de datos en una réplica de disponibilidad de confirmación asincrónica, este valor siempre 0 es .Para una base de datos en una replicación de disponibilidad de confirmación sincrónica, este valor es preciso solo en la base de datos principal. |
synchronization_health |
tinyint | Refleja la intersección del estado de sincronización de una base de datos que está unida al grupo de disponibilidad en la réplica de disponibilidad y el modo de disponibilidad de la réplica de disponibilidad (modo de confirmación sincrónica o confirmación asincrónica). Puede ser uno de los siguientes valores.0 = No correcto. El synchronization_state de la base de datos es 0 (NOT SYNCHRONIZING ).1 = Parcialmente correcto. Una base de datos en una réplica de disponibilidad de confirmación sincrónica se considera parcialmente correcta si synchronization_state es 1 (SYNCHRONIZING ).2 = Correcto. Una base de datos en una réplica de disponibilidad de confirmación sincrónica se considera correcta si synchronization_state es 2 (SYNCHRONIZED ) y una base de datos en una réplica de disponibilidad de confirmación asincrónica se considera correcta si synchronization_state es 1 (SYNCHRONIZING ). |
synchronization_health_desc |
nvarchar(60) | Descripción de la synchronization_health de la base de datos de disponibilidad.NOT_HEALTHY PARTIALLY_HEALTHY HEALTHY |
database_state |
tinyint | 0 = En línea1 = Restaurar2 = Recuperación3 = Recuperación pendiente4 = Sospechoso5 = Emergencia6 = Sin conexiónNota: Igual que state la columna en sys.databases. |
database_state_desc |
nvarchar(60) | Descripción de database_state la de la réplica de disponibilidad.ONLINE RESTORING RECOVERING RECOVERY_PENDING SUSPECT EMERGENCY OFFLINE Nota: Igual que state_desc la columna en sys.databases. |
is_suspended |
bit | Estado de la base de datos, uno de los siguientes:0 = Reanudado1 = Suspendido |
suspend_reason |
tinyint | Si la base de datos está suspendida, el motivo de este estado; uno de los siguientes:0 = Acción de usuario1 = Suspender del asociado2 = Rehacer3 = Capturar4 = Aplicar5 = Reiniciar6 = Deshacer7 = Revalidación8 = Error en el cálculo del punto de sincronización de réplica secundaria |
suspend_reason_desc |
nvarchar(60) | Descripción del motivo del estado suspendido de la base de datos, uno de los siguientes:SUSPEND_FROM_USER = Un usuario suspendió manualmente el movimiento de datosSUSPEND_FROM_PARTNER = La réplica de base de datos se suspende después de una conmutación por error forzada.SUSPEND_FROM_REDO = Error durante la fase de puesta al díaSUSPEND_FROM_APPLY = Error al escribir el registro en el archivo (consulte registro de errores)SUSPEND_FROM_CAPTURE = Error al capturar el registro en la réplica principalSUSPEND_FROM_RESTART = La réplica de base de datos se suspendió antes de reiniciar la base de datos (consulte el registro de errores).SUSPEND_FROM_UNDO = Se produjo un error durante la fase de deshacer (consulte el registro de errores).SUSPEND_FROM_REVALIDATION = Se detecta un error de coincidencia de cambios de registro en la reconexión (consulte el registro de errores).SUSPEND_FROM_XRF_UPDATE = No se puede encontrar el punto de registro común (consulte el registro de errores) |
recovery_lsn |
numeric(25,0) | En la réplica principal, el final del registro de transacciones antes de que la base de datos principal escriba nuevas entradas de registro después de la recuperación o la conmutación por error. Para una base de datos secundaria determinada, si este valor es menor que el LSN protegido actual (last_hardened_lsn ), recovery_lsn es el valor al que esta base de datos secundaria tendría que resincronizar (es decir, volver a y reinicializar a). Si este valor es mayor o igual que el LSN protegido actual, la resincronización sería innecesaria y no se produciría.recovery_lsn refleja un identificador de bloque de registro rellenado con ceros. No es un LSN real. Para obtener información sobre cómo se deriva este valor, consulte Descripción de los valores de columna LSN, más adelante en este artículo. |
truncation_lsn |
numeric(25,0) | En la réplica principal, para la base de datos principal, refleja el LSN de truncamiento del registro mínimo a través de todas las bases de datos secundarias correspondientes. Si el truncamiento de registro local está bloqueado (como mediante una operación de copia de seguridad), este LSN podría ser mayor que el LSN de truncamiento local. En una base de datos secundaria dada, refleja el punto de truncamiento de esa base de datos. truncation_lsn refleja un identificador de bloque de registro rellenado con ceros. No es un número de secuencia de registro real. |
last_sent_lsn |
numeric(25,0) | Al consultar la réplica principal, last_sent_lsn se notifica para cada fila de base de datos de réplica secundaria. El identificador de bloque de registro que indica el punto en el que todos los bloques de registro han sido enviados por el elemento principal. Este es el identificador del siguiente bloque de registro que se envía, en lugar del identificador del bloque de registro enviado más recientemente.last_sent_lsn refleja un identificador de bloque de registro rellenado con ceros. No es un número de secuencia de registro real. |
last_sent_time |
datetime | Al consultar la réplica principal, last_sent_time se notifica para cada fila de base de datos de réplica secundaria. Hora en que se envió el último bloque de registro. |
last_received_lsn |
numeric(25,0) | Cuando se consulta una réplica secundaria, last_received_lsn se notifica para la fila de base de datos de réplica secundaria local. Identificador de bloque de registro que identifica el punto en el que todos los bloques de registro han sido recibidor por la réplica secundaria que hospeda esta base de datos secundaria.last_received_lsn refleja un identificador de bloque de registro rellenado con ceros. No es un número de secuencia de registro real. |
last_received_time |
datetime | Cuando se consulta una réplica secundaria, last_received_time se notifica para la fila de base de datos de réplica secundaria local. Hora en que el identificador de bloque de registro del último mensaje recibido se leyó en la réplica secundaria. |
last_hardened_lsn |
numeric(25,0) | Inicio del bloque de registro que contiene los registros de registro del último LSN protegido en una base de datos secundaria. En una base de datos principal de confirmación asincrónica o en una base de datos de confirmación sincrónica cuya directiva actual es delay , el valor es NULL . Para otras bases de datos principales de confirmación sincrónica, last_hardened_lsn indica el mínimo del LSN protegido en todas las bases de datos secundarias.Nota: refleja un identificador de last_hardened_lsn bloque de registro rellenado con ceros. No es un número de secuencia de registro real. Para obtener más información, consulte Descripción de los valores de columna LSN, más adelante en este artículo. |
last_hardened_time |
datetime | En una base de datos secundaria, hora del identificador de bloque de registro del último LSN protegido (last_hardened_lsn ). En una base de datos principal, refleja la hora que corresponde al LSN reforzado mínimo. |
last_redone_lsn |
numeric(25,0) | El número de secuencia de registro real de la última entrada de registro que se rehízo en la base de datos secundaria. last_redone_lsn siempre es menor que last_hardened_lsn . |
last_redone_time |
datetime | Hora en que la última entrada de registro se rehízo en la base de datos secundaria. |
log_send_queue_size |
bigint | Número de registros de la base de datos principal que no se ha enviado a las bases de datos secundarias, en kilobytes (KB). |
log_send_rate |
bigint | Velocidad media a la que la instancia de réplica principal envió datos durante el último período activo, en kilobytes (KB)/segundo. |
redo_queue_size |
bigint | Número de registros de los archivos de registro de la réplica secundaria que aún no se han rehacer, en kilobytes (KB). |
redo_rate |
bigint | Velocidad media a la que se rehacen los registros de registro en una base de datos secundaria determinada, en kilobytes (KB)/segundo.redo_rate se calcula dividiendo el número total de bytes de registro, ya que el motor de base de datos se inicia por el intervalo de tiempo durante el que se estaba ejecutando activamente, en lugar de por el tiempo transcurrido. Dado que es posible que el rehacer no se esté ejecutando continuamente, el valor resultante podría ser diferente (mayor) que el valor del contador de Database Replica:Redone Bytes/sec rendimiento. |
filestream_send_rate |
bigint | Especifica la velocidad a la que se envían los archivos FILESTREAM a la réplica secundaria, en kilobytes (KB)/segundo. |
end_of_log_lsn |
numeric(25,0) | Fin local del LSN de registro. LSN actual correspondiente a la última entrada de registro en la memoria caché del registro en las bases de datos principal y secundaria. En la réplica principal, las filas secundarias reflejan el final del LSN del registro de los mensajes de progreso más recientes que las réplicas secundarias envían a la réplica principal.end_of_log_lsn refleja un identificador de bloque de registro rellenado con ceros. No es un número de secuencia de registro real. Para obtener más información, consulte Descripción de los valores de columna LSN, más adelante en este artículo. |
last_commit_lsn |
numeric(25,0) | Número de secuencia de registro real correspondiente al último registro de confirmación del registro de transacciones. En la base de datos principal, corresponde al último registro de confirmación procesado. Las filas de las bases de datos secundarias muestran el número de secuencia de registro que la réplica secundaria envió a la réplica principal. En la réplica secundaria, es el último registro de confirmación que se rehízo. |
last_commit_time |
datetime | Hora correspondiente al último registro de confirmación. En la base de datos secundaria, esta hora es igual la misma que para la base de datos principal. En la réplica principal, cada fila de base de datos secundaria muestra la hora en que la réplica secundaria hospeda la base de datos secundaria notificada de nuevo a la réplica principal. La diferencia en el tiempo entre la fila de la base de datos principal y una fila de base de datos secundaria determinada representa aproximadamente el objetivo de punto de recuperación (RPO), suponiendo que se detecta el proceso de puesta al día y que el progreso se notificó de nuevo a la réplica principal por la réplica secundaria. |
low_water_mark_for_ghosts |
bigint | Un número que aumenta regularmente para la base de datos que indica una marca de límite inferior utilizada por la limpieza de registros fantasma en la base de datos principal. Si este número no aumenta con el tiempo, implica que es posible que no se produzca la limpieza de fantasmas. Para decidir qué filas fantasma se han de limpiar, la réplica principal utiliza el valor mínimo de esta columna para esta base de datos en todas las réplicas de disponibilidad (incluida la réplica principal). |
secondary_lag_seconds |
bigint | Número de segundos que la réplica secundaria está detrás de la réplica principal durante la sincronización. En la réplica principal, el retraso de sincronización (retardo) de cada base de datos secundaria se calcula como el número de segundos desde la protección del LSN protegido más antiguo en la réplica principal que todavía se va a proteger en la réplica secundaria. Este valor muestra como 0 si se suspendiera el movimiento de datos. El movimiento de datos debe estar en un estado no suspendido para que este valor muestre el retraso activo.Se aplica a: SQL Server 2016 (13.x) y versiones posteriores. |
Descripción de los valores de columna LSN
Los valores de las end_of_log_lsn
columnas , , last_received_lsn
last_hardened_lsn
, last_sent_lsn
, recovery_lsn
, y truncation_lsn
no son números de secuencia de registro reales (LSN). En su lugar, cada uno de estos valores refleja un identificador de bloque de registro rellenado con ceros.
end_of_log_lsn
, last_hardened_lsn
y recovery_lsn
son LSN de vaciado. Por ejemplo, last_hardened_lsn
indica el inicio del siguiente bloque más allá de los bloques que ya están en el disco. Por lo tanto, cualquier LSN menos el valor de last_hardened_lsn
está en el disco. Los LSN que son mayores o iguales que este valor no se vacían.
De los valores LSN devueltos por sys.dm_hadr_database_replica_states
, solo last_redone_lsn
es un LSN real.
Permisos
SQL Server 2019 (15.x) y versiones anteriores requieren VIEW SERVER STATE
permiso en el servidor.
SQL Server 2022 (16.x) y versiones posteriores requieren VIEW SERVER PERFORMANCE STATE
permiso en el servidor.