sys.dm_hadr_database_replica_states(Transact-SQL)

적용 대상:SQL ServerAzure SQL Managed Instance

SQL Server의 로컬 인스턴스가 가용성 복제본(replica) 호스팅하는 Always On 가용성 그룹에 참여하는 각 데이터베이스에 대한 행을 반환합니다. 이 동적 관리 뷰는 기본 및 보조 복제본(replica) 모두에 대한 상태 정보를 노출합니다. 보조 복제본(replica) 이 보기는 서버 인스턴스의 모든 보조 데이터베이스에 대한 행을 반환합니다. 주 복제본(replica) 이 보기는 각 주 데이터베이스에 대한 행과 해당 보조 데이터베이스에 대한 추가 행을 반환합니다.

Important

작업 및 상위 수준 상태에 따라 데이터베이스 상태 정보를 사용할 수 없거나 최신 상태가 아닐 수 있습니다. 또한 값은 로컬 관련성만 있습니다. 예를 들어 주 복제본(replica) last_hardened_lsn 열의 값은 보조 복제본(replica) 현재 가질 수 있는 실제 강화된 LSN 값이 아니라 주 복제본(replica) 현재 사용할 수 있는 지정된 보조 데이터베이스에 대한 정보를 반영합니다.

열 이름 데이터 형식 설명(기본 복제본(replica))
database_id int SQL Server 내에서 고유한 데이터베이스의 식별자입니다. 이 값은 sys.databases 카탈로그 뷰에 표시된 값과 같습니다.
group_id uniqueidentifier 데이터베이스가 속한 가용성 그룹의 식별자입니다.
replica_id uniqueidentifier 가용성 그룹 내의 가용성 복제본(replica) 식별자입니다.
group_database_id uniqueidentifier 가용성 그룹 내의 데이터베이스 식별자입니다. 이 식별자는 이 데이터베이스가 조인되는 모든 복제본(replica) 동일합니다.
is_local bit 가용성 데이터베이스가 로컬인지 여부는 다음 중 하나입니다.

0 = 데이터베이스가 SQL Server 인스턴스에 로컬이 아닙니다.

1 = 데이터베이스가 서버 인스턴스에 로컬입니다.
is_primary_복제본(replica) bit 복제본(replica) 기본이면 1을 반환하고, 보조 복제본(replica) 경우 0을 반환합니다.

적용 대상: SQL Server 2014(12.x) 이상
synchronization_state tinyint 다음 값 중 하나인 데이터 이동 상태입니다.

0 = 동기화되지 않습니다. 주 데이터베이스의 경우 데이터베이스에서 트랜잭션 로그를 해당 보조 데이터베이스와 동기화할 준비가 되지 않았음을 나타냅니다. 보조 데이터베이스의 경우 데이터베이스에서 연결 문제로 인해 로그 동기화를 시작하지 않았거나 데이터베이스가 일시 중지되었거나, 시작 중에 전환 상태를 진행하고 있거나 역할 전환 중임을 나타냅니다.

1 = 동기화. 주 데이터베이스의 경우 데이터베이스가 보조 데이터베이스의 검사 요청을 수락할 준비가 되었음을 나타냅니다. 보조 데이터베이스의 경우 데이터베이스에 대해 활성 데이터 이동이 발생했음을 나타냅니다.

2 = 동기화됨. 주 데이터베이스는 SYNCHRONIZING 대신 SYNCHRONIZED를 표시합니다. 로컬 캐시에 데이터베이스가 장애 조치(failover)가 준비되고 동기화 중이라고 표시되면 동기 커밋 보조 데이터베이스가 동기화된 것으로 표시됩니다.

3 = 되돌리기. 보조 데이터베이스가 주 데이터베이스에서 페이지 가져오기를 현재 진행 중인 경우의 실행 취소 프로세스의 단계를 나타냅니다.
주의: 보조 복제본(replica) 데이터베이스가 되돌리기 상태인 경우 보조 복제본(replica) 장애 조치(failover)를 강제로 수행하면 데이터베이스를 주 데이터베이스로 시작할 수 없는 상태가 됩니다. 데이터베이스를 보조 데이터베이스로 다시 연결해야 하거나 로그 백업에서 새 로그 레코드를 적용해야 합니다.

4 = 초기화. 보조 데이터베이스가 실행 취소 LSN을 따라잡는 데 필요한 트랜잭션 로그가 보조 복제본(replica) 배송되고 강화되는 경우 실행 취소 단계를 나타냅니다.
주의: 보조 복제본(replica) 데이터베이스가 INITIALIZING 상태이면 보조 복제본(replica) 강제 장애 조치(failover)가 주 데이터베이스로 시작할 수 없는 상태로 데이터베이스를 남깁니다. 데이터베이스를 보조 데이터베이스로 다시 연결해야 하거나 로그 백업에서 새 로그 레코드를 적용해야 합니다.
synchronization_state_desc nvarchar(60) 데이터 이동 상태에 대한 설명입니다. 다음 중 하나입니다.

동기화되지 않음

SYNCHRONIZING

SYNCHRONIZED

되돌리기

INITIALIZING
is_commit_participant bit 0 = 트랜잭션 커밋이 이 데이터베이스에 대해 동기화되어 있지 않습니다.

1 = 트랜잭션 커밋이 이 데이터베이스와 관련하여 동기화됩니다.

비동기 커밋 가용성 복제본의 데이터베이스에 대해서는 이 값이 항상 0입니다.

동기-커밋 가용성 복제본(replica) 데이터베이스의 경우 이 값은 주 데이터베이스에서만 정확합니다.
synchronization_health tinyint 가용성 복제본(replica) 가용성 그룹에 조인된 데이터베이스의 동기화 상태와 가용성 복제본(replica) 가용성 모드(동기-커밋 또는 비동기-커밋 모드) 중 하나를 반영합니다.

0 = 정상이 아닙니다. 데이터베이스의 synchronization_state 0(동기화되지 않음)입니다.

1 = 부분적으로 정상입니다. 동기-커밋 가용성 복제본(replica) 데이터베이스는 synchronization_state 1(SYNCHRONIZING)인 경우 부분적으로 정상으로 간주됩니다.

2 = 정상입니다. 동기-커밋 가용성 복제본(replica) 데이터베이스는 synchronization_state 2(SYNCHRONIZED)인 경우 정상으로 간주되고, 비동기 커밋 가용성 복제본(replica) 데이터베이스는 synchronization_state 1(SYNCHRONIZING)인 경우 정상으로 간주됩니다.
synchronization_health_desc nvarchar(60) 가용성 데이터베이스의 synchronization_health 대한 설명입니다.

NOT_HEALTHY

PARTIALLY_HEALTHY

정상
database_state tinyint 0 = 온라인

1 = 복원

2 = 복구 중

3 = 복구 보류 중

4 = 용의자

5 = 응급 상황

6 = 오프라인

참고:sys.databases의 상태 열과 동일합니다.
database_state_desc nvarchar(60) 가용성 복제본(replica) database_state 대한 설명입니다.

ONLINE

복원

RECOVERING

RECOVERY_PENDING

용의자

EMERGENCY

OFFLINE

참고:state_desc sys.databases의 열과 동일합니다.
is_suspended bit 데이터베이스 상태, 다음 중 하나:

0 = 다시 시작됨

1 = 일시 중지됨
suspend_reason tinyint 데이터베이스가 일시 중지된 경우 일시 중지된 상태의 원인이며 다음 중 하나입니다.

0 = 사용자 동작

1 = 파트너가 일시 중지

2 = 다시 실행

3 = 캡처

4 = 적용

5 = 다시 시작

6 = 실행 취소

7 = 유효성 재검사

8 = 보조 복제본 동기화 지점 계산에서 오류 발생
suspend_reason_desc nvarchar(60) 데이터베이스 일시 중단 상태 이유에 대한 설명입니다. 다음 중 하나입니다.

SUSPEND_FROM_USER = 사용자가 수동으로 데이터 이동을 일시 중단했습니다.

SUSPEND_FROM_PARTNER = 강제 장애 조치(failover) 후 데이터베이스 복제본(replica) 일시 중단됨

SUSPEND_FROM_REDO = 다시 실행 단계에서 오류가 발생했습니다.

SUSPEND_FROM_APPLY = 로그를 파일에 쓸 때 오류가 발생했습니다(오류 로그 참조).

SUSPEND_FROM_CAPTURE = 기본 복제본(replica) 로그를 캡처하는 동안 오류가 발생했습니다.

SUSPEND_FROM_RESTART = 데이터베이스를 다시 시작하기 전에 데이터베이스 복제본(replica) 일시 중단되었습니다(오류 로그 참조).

SUSPEND_FROM_UNDO = 실행 취소 단계 중에 오류가 발생했습니다(오류 로그 참조).

SUSPEND_FROM_REVALIDATION = 재연결 시 로그 변경 사항 불일치가 검색되었습니다(오류 로그 참조).

SUSPEND_FROM_XRF_UPDATE = 공통 로그 지점을 찾을 수 없습니다(오류 로그 참조).
recovery_lsn numeric(25,0) 주 복제본(replica) 주 데이터베이스가 복구 또는 장애 조치(failover) 후 새 로그 레코드를 쓰기 전에 트랜잭션 로그의 끝입니다. 지정된 보조 데이터베이스의 경우 이 값이 현재 강화된 LSN()last_hardened_lsnrecovery_lsn보다 작으면 이 보조 데이터베이스가 다시 동기화해야 하는 값입니다(즉, 되돌리기 다시 초기화할 때). 이 값이 현재 강화된 LSN보다 크거나 같으면 다시 동기화가 필요하지 않으며 발생하지 않습니다.

recovery_lsn 0으로 패딩된 로그 블록 ID를 반영합니다. 실제 LSN(로그 시퀀스 번호)이 아닙니다. 이 값이 파생되는 방법에 대한 자세한 내용은 이 항목의 뒷부분에 있는 LSN 열 값 이해를 참조하세요.
truncation_lsn numeric(25,0) 주 복제본(replica) 주 데이터베이스의 경우 모든 해당 보조 데이터베이스에서 최소 로그 잘림 LSN을 반영합니다. 로컬 로그 잘림이 차단되는 경우(예: 백업 작업) 이 LSN은 로컬 잘림 LSN보다 높을 수 있습니다.

지정된 보조 데이터베이스의 경우 해당 데이터베이스의 잘림 지점을 반영합니다.

truncation_lsn 는 0으로 패딩된 로그 블록 ID를 반영합니다. 실제 로그 시퀀스 번호가 아닙니다.
last_sent_lsn numeric(25,0) 기본 복제본(replica) 쿼리할 때 각 보조 복제본(replica) last_sent_lsn 데이터베이스 행에 대해 보고됩니다. 주 데이터베이스에서 모든 로그 블록을 보낸 지점을 나타내는 로그 블록 식별자입니다. 가장 최근에 보낸 로그 블록의 ID가 아니라 전송될 다음 로그 블록의 ID입니다.

last_sent_lsn 는 0으로 패딩된 로그 블록 ID를 반영합니다. 실제 로그 시퀀스 번호가 아닙니다.
last_sent_time 날짜/시간 기본 복제본(replica) 쿼리할 때 각 보조 복제본(replica) last_sent_time 데이터베이스 행에 대해 보고됩니다. 마지막 로그 블록을 보낸 시간입니다.
last_received_lsn numeric(25,0) 보조 복제본(replica) last_received_lsn 쿼리할 때 로컬 보조 복제본(replica) 데이터베이스 행에 대해 보고됩니다. 이 보조 데이터베이스를 호스팅하는 보조 복제본이 모든 로그 블록을 받은 지점을 식별하는 로그 블록 ID입니다.

last_received_lsn 0으로 패딩된 로그 블록 ID를 반영합니다. 실제 로그 시퀀스 번호가 아닙니다.
last_received_time 날짜/시간 보조 복제본(replica) last_received_time 쿼리할 때 로컬 보조 복제본(replica) 데이터베이스 행에 대해 보고됩니다. 마지막으로 받은 메시지의 로그 블록 ID가 보조 복제본(replica) 읽은 시간입니다.
last_hardened_lsn numeric(25,0) 보조 데이터베이스에서 마지막으로 강화된 LSN의 로그 레코드를 포함하는 로그 블록의 시작입니다.

비동기 커밋 주 데이터베이스 또는 현재 정책이 "지연"인 동기 커밋 데이터베이스에서 값은 NULL입니다. 다른 동기 커밋 주 데이터베이스의 경우 모든 보조 데이터베이스 last_hardened_lsn 에서 강화된 LSN의 최소값을 나타냅니다.

참고:last_hardened_lsn 0으로 패딩된 로그 블록 ID를 반영합니다. 실제 로그 시퀀스 번호가 아닙니다. 자세한 내용은 이 항목의 뒷부분에 있는 LSN 열 값 이해를 참조하세요.
last_hardened_time 날짜/시간 보조 데이터베이스에서 마지막으로 강화된 LSN(last_hardened_lsn)에 대한 로그 블록 식별자의 시간입니다. 주 데이터베이스에서 확정된 최소 LSN에 해당하는 시간을 반영합니다.
last_redone_lsn numeric(25,0) 보조 데이터베이스에서 마지막으로 다시 실행된 로그 레코드의 실제 로그 시퀀스 번호입니다. 항상 last_redone_lsn last_hardened_lsn 미만입니다.
last_redone_time 날짜/시간 보조 데이터베이스에서 마지막 로그 레코드가 다시 실행된 시간입니다.
log_send_queue_size bigint 보조 데이터베이스로 전송되지 않은 주 데이터베이스의 로그 레코드 양(KB)입니다.
log_send_rate bigint 주 복제본(replica) 인스턴스가 마지막 활성 기간 동안 KB(KB)/초 단위로 데이터를 보낸 평균 속도입니다.
redo_queue_size bigint 아직 다시 실행되지 않은 보조 복제본(replica) 로그 파일의 로그 레코드 양(KB)입니다.
redo_rate bigint 지정된 보조 데이터베이스에서 로그 레코드를 다시 실행 중인 평균 속도(KB)/초입니다.

redo_rate 데이터베이스 엔진 시작 이후 다시 실행된 총 로그 바이트를 경과된 시간이 아니라 다시 실행 중일 때의 시간 범위로 나누어 계산됩니다. 다시 실행이 지속적으로 실행되지 않을 수 있으므로 결과 값이 성능 카운터 값 Database Replica:Redone Bytes/sec 과 다를 수 있습니다(더 높음).
filestream_send_rate bigint FILESTREAM 파일이 보조 복제본(replica) 전송되는 속도(KB)/초(KB)입니다.
end_of_log_lsn numeric(25,0) 로그 LSN의 로컬 끝입니다. 주 및 보조 데이터베이스의 로그 캐시에 있는 마지막 로그 레코드에 해당하는 실제 LSN입니다. 기본 복제본(replica) 보조 행은 보조 복제본(replica) 주 복제본(replica) 보낸 최신 진행률 메시지의 로그 LSN 끝을 반영합니다.

end_of_log_lsn 0으로 패딩된 로그 블록 ID를 반영합니다. 실제 로그 시퀀스 번호가 아닙니다. 자세한 내용은 이 항목의 뒷부분에 있는 LSN 열 값 이해를 참조하세요.
last_commit_lsn Numeric(25,0) 트랜잭션 로그의 마지막 커밋 레코드에 해당하는 실제 로그 시퀀스 번호입니다.

주 데이터베이스에서 처리된 마지막 커밋 레코드에 해당합니다. 보조 데이터베이스의 행에는 보조 복제본(replica) 주 복제본(replica) 보낸 로그 시퀀스 번호가 표시됩니다.

보조 복제본(replica) 다시 실행된 마지막 커밋 레코드입니다.
last_commit_time 날짜/시간 마지막 커밋 레코드에 해당하는 시간입니다.

보조 데이터베이스에서 이 시간은 주 데이터베이스의 시간과 동일합니다.

주 복제본(replica) 각 보조 데이터베이스 행은 보조 데이터베이스를 호스트하는 보조 복제본(replica) 주 복제본(replica) 다시 보고한 시간을 표시합니다. 주 데이터베이스 행과 지정된 보조 데이터베이스 행 간의 시간 차이는 다시 실행 프로세스가 catch되고 진행률이 보조 복제본(replica) 주 복제본(replica) 다시 보고되었다고 가정하는 RPO(복구 지점 목표)를 나타냅니다.
low_water_mark_for_ghosts bigint 주 데이터베이스에서 ghost 클린up에서 사용하는 낮은 워터 마크를 나타내는 데이터베이스의 단조로 증가하는 수입니다. 시간이 지남에 따라 이 숫자가 증가하지 않으면 고스트 클린 발생하지 않을 수 있음을 의미합니다. 정리할 고스트 행을 결정하기 위해 주 복제본은 주 복제본을 포함한 모든 가용성 복제본에서 이 데이터베이스에 대한 이 열의 최소값을 사용합니다.
secondary_lag_seconds bigint 동기화 중에 보조 복제본(replica) 주 복제본(replica) 뒤에 있는 시간(초)입니다.

적용 대상: SQL Server 2016(13.x) 이상

LSN 열 값 이해

end_of_log_lsn, last_hardened_lsn, last_received_lsn, last_sent_lsn, recovery_lsntruncation_lsn 열의 값은 실제 LSN(로그 시퀀스 번호)이 아닙니다. 대신 이러한 각 값은 0으로 패딩된 로그 블록 ID를 반영합니다.

end_of_log_lsn, last_hardened_lsnrecovery_lsn 플러시 LSN입니다. 예를 들어 last_hardened_lsn 디스크에 이미 있는 블록을 지나서 다음 블록의 시작을 나타냅니다. 따라서 last_hardened_lsn 값이 있는 모든 LSN < 은 디스크에 있습니다. 이 값에 =인 >LSN은 플러시되지 않습니다.

sys.dm_hadr_database_복제본(replica)_states 반환된 LSN 값 중 last_redone_lsn실제 LSN입니다.

사용 권한

서버에 대한 VIEW SERVER STATE 권한이 필요합니다.

SQL Server 2022 이상에 대한 권한

서버에 대한 VIEW SERVER PERFORMANCE STATE 권한이 필요합니다.

참고 항목

Always On 가용성 그룹(SQL Server)
가용성 그룹 모니터링(Transact-SQL)