sys.dm_hadr_database_replica_states(Transact-SQL)
SQL Server의 로컬 인스턴스가 가용성 복제본을 호스팅 중인 AlwaysOn 가용성 그룹에 참여하는 각 데이터베이스에 대해 하나의 행을 반환합니다. 이 동적 관리 뷰는 주 복제본과 보조 복제본 모두에 대한 상태 정보를 표시합니다. 보조 복제본에서 이 뷰는 서버 인스턴스에 있는 모든 보조 데이터베이스에 대해 하나의 행을 반환합니다. 주 복제본에서 이 뷰는 각 주 데이터베이스에 대해 하나의 행과 해당 보조 데이터베이스에 대해 하나의 행을 반환합니다.
중요 |
---|
동작과 상위 수준의 상태에 따라 데이터베이스 상태 정보가 사용할 수 없거나 만료될 수 있습니다. 또한 값은 로컬 관련성만 가집니다. 예를 들어 주 복제본에서 last_hardened_lsn 열의 값은 보조 복제본이 현재 가질 수 있는 실제 확정된 LSN 값이 아니라 주 복제본에서 현재 사용할 수 있는 지정된 보조 데이터베이스에 대한 정보를 반영합니다. |
열 이름 |
데이터 형식 |
주 복제본에 대한 설명 |
||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
database_id |
int |
SQL Server 내에서 고유한 데이터베이스의 식별자입니다. 이 값은 sys.databases 카탈로그 뷰에 표시된 것과 동일한 값입니다. |
||||||||||||||||
group_id |
uniqueidentifier |
데이터베이스가 속한 가용성 그룹의 식별자입니다. |
||||||||||||||||
replica_id |
uniqueidentifier |
가용성 그룹 내 가용성 복제본의 식별자입니다. |
||||||||||||||||
group_database_id |
uniqueidentifier |
가용성 그룹 내 데이터베이스의 식별자입니다. 이 식별자는 이 데이터베이스가 조인되는 모든 복제본에서 동일합니다. |
||||||||||||||||
is_local |
bit |
가용성 데이터베이스가 로컬인지 여부를 나타나며 다음 중 하나입니다. 0 = 데이터베이스가 SQL Server 인스턴스에 로컬이 아닙니다. 1 = 데이터베이스가 서버 인스턴스에 로컬입니다. |
||||||||||||||||
synchronization_state |
tinyint |
데이터 이동 상태이며 다음 중 하나입니다.
|
||||||||||||||||
synchronization_state_desc |
nvarchar(60) |
데이터 이동 상태에 대한 설명이며 다음 중 하나입니다. NOT SYNCHRONIZING SYNCHRONIZING SYNCHRONIZED REVERTING INITIALIZING |
||||||||||||||||
is_commit_participant |
bit |
0 = 트랜잭션 커밋이 이 데이터베이스에 대해 동기화되어 있지 않습니다. 1 = 트랜잭션 커밋이 이 데이터베이스에 대해 동기화되어 있습니다. 비동기 커밋 가용성 복제본의 데이터베이스에 대해서는 이 값이 항상 0입니다. 동기 커밋 가용성 복제본의 데이터베이스에 대해서는 이 값이 주 데이터베이스에서만 정확합니다. |
||||||||||||||||
synchronization_health |
tinyint |
가용성 복제본의 가용성 그룹에 조인되어 있는 데이터베이스의 동기화 상태와 가용성 복제본의 가용성 모드(동기 커밋 또는 비동기 커밋 모드)의 교집합을 반영하며, 다음 중 하나입니다.
|
||||||||||||||||
synchronization_health_desc |
nvarchar(60) |
가용성 데이터베이스의 synchronization_health에 대한 설명입니다. NOT_HEALTHY PARTIALLY_HEALTHY HEALTHY |
||||||||||||||||
database_state |
tinyint |
0 = 온라인 1 = 복원 중 2 = 복구 중 3 = 복구 보류 중 4 = 주의 대상 5 = 응급 6 = 오프라인
|
||||||||||||||||
database_state_desc |
nvarchar(60) |
가용성 복제본의 database_state에 대한 설명입니다. ONLINE RESTORING RECOVERING RECOVERY_PENDING SUSPECT EMERGENCY OFFLINE
|
||||||||||||||||
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) 후 데이터베이스 복제본이 중단됨 SUSPEND_FROM_REDO = 다시 실행 단계에서 오류가 발생함 SUSPEND_FROM_APPLY = 파일에 로그를 기록할 때 오류가 발생함(오류 로그 참조) SUSPEND_FROM_CAPTURE = 주 복제본에서 로그를 캡처하는 동안 오류가 발생함 SUSPEND_FROM_RESTART = 데이터베이스가 다시 시작되기 전에 데이터베이스 복제본이 중단됨(오류 로그 참조) SUSPEND_FROM_UNDO = 실행 취소 단계에서 오류가 발생함(오류 로그 참조) SUSPEND_FROM_REVALIDATION = 다시 연결 중에 로그 변경 불일치가 발견됨(오류 로그 참조) SUSPEND_FROM_XRF_UPDATE = 공통 로그 지점을 찾을 수 없음(오류 로그 참조) |
||||||||||||||||
recovery_lsn |
numeric(25,0) |
주 복제본에서 주 데이터베이스가 복구 또는 장애 조치(failover) 후 새 로그 레코드를 쓰기 전의 트랜잭션 로그 끝입니다. 지정된 보조 데이터베이스에 대해 이 값이 현재 확정된 LSN(last_hardened_lsn)보다 작으면 recovery_lsn은 이 보조 데이터베이스에서 다시 동기화(즉, 되돌려서 다시 초기화)해야 하는 값입니다. 이 값이 현재 확정된 LSN보다 크거나 같으면 다시 동기화가 필요하지 않으며 발생하지 않습니다. recovery_lsn은 0으로 채워진 로그-블록 ID를 반영합니다. 실제 LSN(로그 시퀀스 번호)이 아닙니다. 이 값을 파생하는 방법은 이 항목의 뒷부분에 나오는 LSN 열 값 이해를 참조하십시오. |
||||||||||||||||
truncation_lsn |
numeric(25,0) |
주 복제본의 주 데이터베이스의 경우 모든 해당 보조 데이터베이스에 최소 로그 잘림 LSN을 반영합니다. 백업 작업 등에 의해 로컬 로그 잘림이 차단되는 경우 이 LSN이 로컬 잘림 LSN보다 클 수 있습니다. 지정된 보조 데이터베이스의 경우 해당 데이터베이스의 잘림 지점을 반영합니다. truncation_lsn은 0으로 채워진 로그-블록 ID를 반영합니다. 실제 로그 시퀀스 번호가 아닙니다. |
||||||||||||||||
last_sent_lsn |
numeric(25,0) |
모든 로그 블록이 주 복제본에 의해 전송된 지점을 나타내는 로그 블록 식별자입니다. 가장 최근에 전송된 로그 블록의 ID가 아니라 전송될 다음 로그 블록의 ID입니다. last_sent_lsn은 0으로 채워진 로그-블록 ID를 반영하며, 실제 로그 시퀀스 번호가 아닙니다. |
||||||||||||||||
last_sent_time |
datetime |
마지막 로그 블록이 전송된 시간입니다. |
||||||||||||||||
last_received_lsn |
numeric(25,0) |
이 보조 데이터베이스를 호스팅하는 보조 복제본이 모든 로그 블록을 받은 지점을 식별하는 로그 블록 ID입니다. last_received_lsn은 0으로 채워진 로그-블록 ID를 반영합니다. 실제 로그 시퀀스 번호가 아닙니다. |
||||||||||||||||
last_received_time |
datetime |
보조 복제본에서 마지막으로 수신된 메시지의 로그 블록 ID를 읽은 시간입니다. |
||||||||||||||||
last_hardened_lsn |
numeric(25,0) |
보조 데이터베이스에서 마지막으로 확정된 LSN의 로그 레코드를 포함하는 로그 블록의 시작입니다. 현재 정책이 "지연"인 동기 커밋 데이터베이스 또는 비동기 커밋 주 데이터베이스에서 이 값은 NULL입니다. 다른 동기 커밋 주 데이터베이스의 경우 last_hardened_lsn은 모든 보조 데이터베이스에서 확정된 LSN의 최소값을 나타냅니다.
|
||||||||||||||||
last_hardened_time |
datetime |
보조 데이터베이스에서 마지막으로 확정된 LSN(last_hardened_lsn)에 대한 로그 블록 식별자의 시간입니다. 주 데이터베이스에서 확정된 최소 LSN에 해당하는 시간을 반영합니다. |
||||||||||||||||
last_redone_lsn |
numeric(25,0) |
보조 데이터베이스에서 마지막으로 다시 실행된 로그 레코드의 실제 로그 시퀀스 번호입니다. last_redone_lsn은 항상 last_hardened_lsn보다 작습니다. |
||||||||||||||||
last_redone_time |
datetime |
보조 데이터베이스에서 마지막 로그 레코드가 다시 실행된 시간입니다. |
||||||||||||||||
log_send_queue_size |
bigint |
주 데이터베이스의 로그 레코드 중 보조 데이터베이스로 전송되지 않은 레코드의 양(KB)입니다. |
||||||||||||||||
log_send_rate |
bigint |
로그 레코드가 보조 데이터베이스로 전송되는 속도(KB/초)입니다. |
||||||||||||||||
redo_queue_size |
bigint |
보조 복제본의 로그 파일에 있는 로그 레코드 중 아직 다시 실행되지 않은 로그 레코드의 양(KB)입니다. |
||||||||||||||||
redo_rate |
bigint |
지정된 보조 데이터베이스에서 로그 레코드가 다시 실행되는 속도(KB/초)입니다. |
||||||||||||||||
filestream_send_rate |
bigint |
FILESTREAM 파일이 보조 복제본으로 전송되는 속도(KB/초)입니다. |
||||||||||||||||
end_of_log_lsn |
numeric(25,0) |
로그 LSN의 로컬 끝입니다. 주 데이터베이스와 보조 데이터베이스의 로그 캐시에 있는 마지막 로그 레코드에 해당하는 실제 LSN입니다. 기본 복제본에서 보조 행은 보조 복제본이 주 복제본에 전송한 최근 진행 메시지의 로그 LSN의 끝을 반영합니다. end_of_log_lsn은 0으로 채워진 로그-블록 ID를 반영합니다. 실제 로그 시퀀스 번호가 아닙니다. 자세한 내용은 이 항목의 뒷부분에 나오는 LSN 열 값 이해를 참조하십시오. |
||||||||||||||||
last_commit_lsn |
Numeric(25,0) |
트랜잭션 로그의 마지막 커밋 레코드에 해당하는 실제 로그 시퀀스 번호입니다. 주 데이터베이스에서 처리된 마지막 커밋 레코드에 해당합니다. 보조 데이터베이스에 대한 행에 보조 복제본이 주 복제본에 전송한 로그 시퀀스 번호가 표시됩니다. 보조 데이터베이스에서 다시 실행된 마지막 커밋 레코드입니다. |
||||||||||||||||
last_commit_time |
datetime |
마지막 커밋 레코드에 해당하는 시간입니다. 보조 데이터베이스에서 이 시간은 주 데이터베이스의 시간과 동일합니다. 주 복제본에서 각 보조 데이터베이스 행에는 해당 보조 데이터베이스를 호스팅하는 보조 복제본이 주 복제본에 다시 보고된 시간이 표시됩니다. 다시 실행 프로세스가 처리되고 진행률이 보조 복제본에 의해 주 복제본에 다시 보고된다고 가정할 때 주 데이터베이스 행과 지정된 보조 데이터베이스 행에 표시되는 시간의 차이는 대략적인 RPO(복구 시간 목표)를 나타냅니다. |
||||||||||||||||
low_water_mark_for_ghosts |
bigint |
주 데이터베이스에서 고스트 정리에 사용되는 하위 워터마크를 나타내는 데이터베이스에 대한 일정하게 증가하는 번호입니다. 시간이 지나도 이 번호가 증가하지 않으면 고스트 정리가 수행되지 않은 것을 의미합니다. 정리할 고스트 행을 결정하기 위해 주 복제본은 주 복제본을 포함한 모든 가용성 복제본에서 이 데이터베이스에 대한 이 열의 최소값을 사용합니다. |
LSN 열 값 이해
end_of_log_lsn, last_hardened_lsn, last_received_lsn, last_sent_lsn, recovery_lsn 및 truncation_lsn 열의 값은 실제 LSN(로그 시퀀스 번호)이 아닙니다. 각 값은 0으로 채워진 로그-블록 ID를 반영합니다.
end_of_log_lsn, last_hardened_lsn 및 recovery_lsn은 플러시 LSN입니다. 예를 들어 last_hardened_lsn은 디스크에 이미 있는 블록의 뒤에 오는 다음 블록의 시작을 나타냅니다. 따라서 last_hardened_lsn 값보다 작은(<) 모든 LSN은 디스크에 있습니다. 이 값보다 크거나 같은(>=) LSN은 플러시되지 않습니다.
sys.dm_hadr_database_replica_states에 의해 반환되는 LSN 값 중 last_redone_lsn만 실제 LSN입니다.
보안
사용 권한
서버에 대한 VIEW SERVER STATE 권한이 필요합니다.