sys.dm_hadr_database_replica_states(Transact-SQL)
적용 대상: SQL Server Azure SQL Managed Instance
SQL Server의 로컬 인스턴스가 가용성 복제본을 호스팅하는 Always On 가용성 그룹에 참여하는 각 데이터베이스에 대한 행을 반환합니다. 이 동적 관리 뷰는 주 복제본과 보조 복제본 모두에 대한 상태 정보를 노출합니다. 보조 복제본에서 이 보기는 서버 인스턴스의 모든 보조 데이터베이스에 대한 행을 반환합니다. 주 복제본에서 이 보기는 각 주 데이터베이스에 대한 행과 해당 보조 데이터베이스에 대한 추가 행을 반환합니다.
Important
작업 및 상위 수준 상태에 따라 데이터베이스 상태 정보를 사용할 수 없거나 최신 상태가 아닐 수 있습니다. 또한 값은 로컬 관련성만 있습니다. 예를 들어 주 복제본에서 열 값 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 = 데이터베이스가 서버 인스턴스에 로컬입니다. |
is_primary_replica |
bit | 복제본이 주 복제본인지 또는 0 보조 복제본인지 여부를 반환 1 합니다.적용 대상: SQL Server 2014(12.x) 이상 버전. |
synchronization_state |
tinyint | 다음 값 중 하나인 데이터 이동 상태입니다.0 = 동기화되지 않습니다. 주 데이터베이스의 경우 데이터베이스가 해당 보조 데이터베이스와 트랜잭션 로그를 동기화할 준비가 되지 않음을 나타냅니다. 보조 데이터베이스의 경우 이 값은 연결 문제로 인해 데이터베이스가 로그 동기화를 시작하지 않았거나, 일시 중단 중이거나, 시작 또는 역할 스위치 중에 전환 상태를 거치고 있음을 나타냅니다.1 = 동기화. 주 데이터베이스의 경우 데이터베이스가 보조 데이터베이스의 검사 요청을 수락할 준비가 되었음을 나타냅니다. 보조 데이터베이스의 경우 데이터베이스에 대해 활성 데이터 이동이 발생했음을 나타냅니다.2 = 동기화되었습니다. 주 데이터베이스가 SYNCHRONIZING 대신 표시됩니다SYNCHRONIZED . 로컬 캐시에 데이터베이스가 장애 조치(failover)가 준비되고 동기화 중이라고 표시되면 동기 커밋 보조 데이터베이스가 동기화된 것으로 표시됩니다.3 = 되돌리기. 보조 데이터베이스가 주 데이터베이스에서 페이지 가져오기를 현재 진행 중인 경우의 실행 취소 프로세스의 단계를 나타냅니다.주의: 보조 복제본의 데이터베이스가 상태에 있는 REVERTING 경우 보조 복제본으로 강제 장애 조치(failover)를 수행하면 데이터베이스를 주 데이터베이스로 시작할 수 없는 상태로 남게 됩니다. 데이터베이스를 보조 데이터베이스로 다시 연결해야 하거나 로그 백업에서 새 로그 레코드를 적용해야 합니다.4 = 초기화. 보조 데이터베이스가 보조 복제본에 배송되고 강화되는 실행 취소 LSN을 따라잡는 데 트랜잭션 로그가 필요한 경우의 실행 취소 단계를 나타냅니다.주의: 보조 복제본의 데이터베이스가 상태에 있는 INITIALIZING 경우 보조 복제본으로 강제 장애 조치(failover)를 수행하면 데이터베이스를 주 데이터베이스로 시작할 수 없는 상태로 남게 됩니다. 데이터베이스를 보조 데이터베이스로 다시 연결해야 하거나 로그 백업에서 새 로그 레코드를 적용해야 합니다. |
synchronization_state_desc |
nvarchar(60) | 데이터 이동 상태에 대한 설명입니다. 다음 중 하나입니다.NOT SYNCHRONIZING SYNCHRONIZING SYNCHRONIZED REVERTING INITIALIZING |
is_commit_participant |
bit | 0 = 트랜잭션 커밋은 이 데이터베이스와 관련하여 동기화되지 않습니다.1 = 트랜잭션 커밋은 이 데이터베이스와 관련하여 동기화됩니다.비동기 커밋 가용성 복제본의 데이터베이스의 경우 이 값은 항상 0 입니다.동기-커밋 가용성 복제본의 데이터베이스의 경우 이 값은 주 데이터베이스에서만 정확합니다. |
synchronization_health |
tinyint | 가용성 복제본의 가용성 그룹에 조인된 데이터베이스의 동기화 상태와 가용성 복제본의 가용성 모드(동기-커밋 또는 비동기-커밋 모드)를 반영합니다. 다음 값 중 하나일 수 있습니다.0 = 정상이 아닙니다. synchronization_state 데이터베이스의 (NOT SYNCHRONIZING )입니다 0 .1 = 부분적으로 정상입니다. 동기-커밋 가용성 복제본의 데이터베이스는 (SYNCHRONIZING )인 경우 synchronization_state 1 부분적으로 정상으로 간주됩니다.2 = 정상입니다. 동기-커밋 가용성 복제본의 데이터베이스는 정상(있는 경우synchronization_state )으로 간주되며, 비동기 커밋 가용성 복제본의 데이터베이스는 1 SYNCHRONIZING 정상(있는 경우synchronization_state )으로 간주됩니다.SYNCHRONIZED 2 |
synchronization_health_desc |
nvarchar(60) | 가용성 데이터베이스에 synchronization_health 대한 설명입니다.NOT_HEALTHY PARTIALLY_HEALTHY HEALTHY |
database_state |
tinyint | 0 = 온라인1 = 복원 중2 = 복구 중3 = 복구 보류 중4 = 용의자5 = 긴급 상황6 = 오프라인참고: 다음의 열과 같습니다 state . sys.databases. |
database_state_desc |
nvarchar(60) | 가용성 복제본에 database_state 대한 설명입니다.ONLINE RESTORING RECOVERING RECOVERY_PENDING SUSPECT 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) 후 데이터베이스 복제본이 일시 중단됨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 열 값 이해(Understand the LSN column values)를 참조하세요. |
truncation_lsn |
numeric(25,0) | 주 복제본에서 주 데이터베이스의 경우 모든 해당 보조 데이터베이스에서 최소 로그 잘림 LSN을 반영합니다. 로컬 로그 잘림이 차단되는 경우(예: 백업 작업) 이 LSN은 로컬 잘림 LSN보다 높을 수 있습니다. 지정된 보조 데이터베이스의 경우 해당 데이터베이스의 잘림 지점을 반영합니다. truncation_lsn 는 0으로 패딩된 로그 블록 ID를 반영합니다. 실제 로그 시퀀스 번호가 아닙니다. |
last_sent_lsn |
numeric(25,0) | 주 복제본을 쿼리할 때 각 보조 복제본 last_sent_lsn 데이터베이스 행에 대해 보고됩니다. 주 데이터베이스에서 모든 로그 블록을 보낸 지점을 나타내는 로그 블록 식별자입니다. 가장 최근에 보낸 로그 블록의 ID가 아니라 전송되는 다음 로그 블록의 ID입니다.last_sent_lsn 는 0으로 패딩된 로그 블록 ID를 반영합니다. 실제 로그 시퀀스 번호가 아닙니다. |
last_sent_time |
날짜/시간 | 주 복제본을 쿼리할 때 각 보조 복제본 last_sent_time 데이터베이스 행에 대해 보고됩니다. 마지막 로그 블록을 보낸 시간입니다. |
last_received_lsn |
numeric(25,0) | 보조 복제본을 쿼리할 때 로컬 보조 복제본 last_received_lsn 데이터베이스 행에 대해 보고됩니다. 이 보조 데이터베이스를 호스팅하는 보조 복제본이 모든 로그 블록을 받은 지점을 식별하는 로그 블록 ID입니다.last_received_lsn 0으로 패딩된 로그 블록 ID를 반영합니다. 실제 로그 시퀀스 번호가 아닙니다. |
last_received_time |
날짜/시간 | 보조 복제본을 쿼리할 때 로컬 보조 복제본 last_received_time 데이터베이스 행에 대해 보고됩니다. 마지막으로 받은 메시지의 로그 블록 ID가 보조 복제본에서 읽은 시간입니다. |
last_hardened_lsn |
numeric(25,0) | 보조 데이터베이스에서 마지막으로 강화된 LSN의 로그 레코드를 포함하는 로그 블록의 시작입니다. 비동기 커밋 주 데이터베이스 또는 현재 정책이 있는 동기-커밋 데이터베이스에서 값은 delay 다음과 같습니다 NULL . 다른 동기 커밋 주 데이터베이스의 경우 모든 보조 데이터베이스 last_hardened_lsn 에서 강화된 LSN의 최소값을 나타냅니다.참고: last_hardened_lsn 0으로 패딩된 로그 블록 ID를 반영합니다. 실제 로그 시퀀스 번호가 아닙니다. 자세한 내용은 이 문서의 뒷부분에 있는 LSN 열 값 이해(Understand the LSN column values)를 참조하세요. |
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 | 주 복제본 인스턴스가 마지막 활성 기간 동안 데이터를 보낸 평균 속도(KB)/초입니다. |
redo_queue_size |
bigint | 아직 다시 실행되지 않은 보조 복제본의 로그 파일의 로그 레코드 수(KB)입니다. |
redo_rate |
bigint | 지정된 보조 데이터베이스에서 로그 레코드를 다시 실행 중인 평균 속도(KB)/초입니다.redo_rate 는 데이터베이스 엔진 시작 이후 다시 실행된 총 로그 바이트를 경과된 시간이 아니라 다시 실행 중일 때의 시간 범위로 나누어 계산됩니다. 다시 실행이 지속적으로 실행되지 않을 수 있으므로 결과 값이 성능 카운터 값 Database Replica:Redone Bytes/sec 과 다를 수 있습니다(더 높음). |
filestream_send_rate |
bigint | FILESTREAM 파일이 보조 복제본으로 전송되는 속도(KB)/초를 지정합니다. |
end_of_log_lsn |
numeric(25,0) | 로그 LSN의 로컬 끝입니다. 주 및 보조 데이터베이스의 로그 캐시에 있는 마지막 로그 레코드에 해당하는 실제 LSN입니다. 주 복제본에서 보조 행은 보조 복제본이 주 복제본에 보낸 최신 진행률 메시지의 로그 LSN 끝을 반영합니다.end_of_log_lsn 는 0으로 패딩된 로그 블록 ID를 반영합니다. 실제 로그 시퀀스 번호가 아닙니다. 자세한 내용은 이 문서의 뒷부분에 있는 LSN 열 값 이해(Understand the LSN column values)를 참조하세요. |
last_commit_lsn |
numeric(25,0) | 트랜잭션 로그의 마지막 커밋 레코드에 해당하는 실제 로그 시퀀스 번호입니다. 주 데이터베이스에서 처리된 마지막 커밋 레코드에 해당합니다. 보조 데이터베이스의 행에는 보조 복제본이 주 복제본에 보낸 로그 시퀀스 번호가 표시됩니다. 보조 복제본에서 다시 실행된 마지막 커밋 레코드입니다. |
last_commit_time |
날짜/시간 | 마지막 커밋 레코드에 해당하는 시간입니다. 보조 데이터베이스에서 이 시간은 주 데이터베이스의 시간과 동일합니다. 주 복제본에서 각 보조 데이터베이스 행은 보조 데이터베이스를 호스트하는 보조 복제본이 주 복제본에 다시 보고한 시간을 표시합니다. 주 데이터베이스 행과 지정된 보조 데이터베이스 행 간의 시간 차이는 다시 실행 프로세스가 catch되고 진행률이 보조 복제본에 의해 주 복제본에 다시 보고되었다고 가정하는 RPO(복구 지점 목표)를 나타냅니다. |
low_water_mark_for_ghosts |
bigint | 주 데이터베이스에서 고스트 정리에 사용되는 낮은 워터 마크를 나타내는 데이터베이스의 단조로 증가하는 수입니다. 이 숫자가 시간이 지남에 따라 증가하지 않으면 고스트 정리가 발생하지 않을 수 있음을 의미합니다. 정리할 고스트 행을 결정하기 위해 주 복제본은 주 복제본을 포함한 모든 가용성 복제본에서 이 데이터베이스에 대한 이 열의 최소값을 사용합니다. |
secondary_lag_seconds |
bigint | 동기화 중에 보조 복제본이 주 복제본 뒤에 있는 시간(초)입니다. 주 복제본에서 각 보조 데이터베이스에 대한 동기화 지연(지연)은 보조 복제본에서 아직 강화되지 않은 주 복제본에서 가장 먼저 강화된 LSN의 강화 이후의 시간(초)으로 계산됩니다. 이 값은 데이터 이동이 일시 중단된 것처럼 0 표시됩니다. 이 값이 활성 지연을 표시하려면 데이터 이동이 일시 중단되지 않은 상태여야 합니다.적용 대상: SQL Server 2016(13.x) 이상 버전 |
LSN 열 값 이해
, , last_hardened_lsn
, recovery_lsn
last_received_lsn
last_sent_lsn
및 truncation_lsn
열의 end_of_log_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 값 중 실제 LSN만 last_redone_lsn
반환됩니다.
사용 권한
SQL Server 2019(15.x) 및 이전 버전에는 서버에 대한 권한이 필요합니다 VIEW SERVER STATE
.
SQL Server 2022(16.x) 이상 버전에는 서버에 대한 권한이 필요합니다 VIEW SERVER PERFORMANCE STATE
.