sys.dm_db_log_stats(Transact-SQL)

적용 대상: SQL Server 2016(13.x) SP 2 이상 Azure SQL Database Azure SQL Managed Instance

데이터베이스의 트랜잭션 로그 파일에 대한 요약 수준 특성 및 정보를 반환합니다. 트랜잭션 로그 상태의 모니터링 및 진단 이 정보를 사용합니다.

Transact-SQL 구문 표기 규칙

구문

 sys.dm_db_log_stats ( database_id )

인수

database_id | NULL | 기본

데이터베이스의 ID입니다. database_idint입니다. 유효한 입력은 데이터베이스 NULL의 ID 번호 또는 DEFAULT. 기본값은 NULL입니다. NULL 현재 DEFAULT 데이터베이스의 컨텍스트에서 동일한 값입니다.
기본 제공 함수 DB_ID 지정할 수 있습니다. 데이터베이스 이름을 지정하지 않고 사용하는 DB_ID 경우 현재 데이터베이스의 호환성 수준은 90 이상이어야 합니다.

반환된 테이블

열 이름 데이터 형식 설명
database_id int 데이터베이스 ID입니다.

Azure SQL Database에서 값은 단일 데이터베이스 또는 탄력적 풀 내에서 고유하지만 논리 서버 내에는 없습니다.
recovery_model nvarchar(60) 데이터베이스의 복구 모델입니다. 가능한 값은 다음과 같습니다.
SIMPLE
Bulk_logged
FULL
log_min_lsn nvarchar(24) 트랜잭션 로그의 현재 LSN(시작 로그 시퀀스 번호) 입니다.
log_end_lsn nvarchar(24) 트랜잭션 로그에 있는 마지막 로그 레코드의 LSN(로그 시퀀스 번호) 입니다.
current_vlf_sequence_number bigint 실행 시 현재 VLF(가상 로그 파일) 시퀀스 번호입니다.
current_vlf_size_mb float 현재 VLF(가상 로그 파일) 크기(MB) 입니다.
total_vlf_count bigint 트랜잭션 로그의 총 VLF(가상 로그 파일) 수입니다.
total_log_size_mb float 총 트랜잭션 로그 크기(MB)입니다.
active_vlf_count bigint 트랜잭션 로그의 총 활성 VLF(가상 로그 파일) 수입니다.
active_log_size_mb float 총 활성 트랜잭션 로그 크기(MB)입니다.
log_truncation_holdup_reason nvarchar(60) 로그 잘림 보류 이유입니다. 값은 .의 sys.databases열과 log_reuse_wait_desc 같습니다. (이러한 값에 대한 자세한 설명은 다음을 참조하세요 .트랜잭션 로그).
가능한 값은 다음과 같습니다.
NOTHING
CHECKPOINT
LOG_BACKUP
ACTIVE_BACKUP_OR_RESTORE
ACTIVE_TRANSACTION
DATABASE_MIRRORING
복제
DATABASE_SNAPSHOT_CREATION
LOG_SCAN
AVAILABILITY_REPLICA
OLDEST_PAGE
XTP_CHECKPOINT
기타 일시적
log_backup_time 날짜/시간 마지막 트랜잭션 로그 백업 시간입니다.
log_backup_lsn nvarchar(24) 마지막 트랜잭션 로그 백업 로그 시퀀스 번호(LSN)입니다.
log_since_last_log_backup_mb float 마지막 트랜잭션 로그 백업 LSN(로그 시퀀스 번호) 이후의 로그 크기(MB)입니다.
log_검사point_lsn nvarchar(24) 마지막 검사포인트 LSN(로그 시퀀스 번호)입니다.
log_since_last_검사point_mb float 마지막 검사포인트 LSN(로그 시퀀스 번호) 이후의 로그 크기(MB)입니다.
log_recovery_lsn nvarchar(24) 데이터베이스의 LSN(복구 로그 시퀀스 번호) 입니다. 검사포인트 LSN log_recovery_lsn 이전에 발생하는 경우 log_recovery_lsn 가장 오래된 활성 트랜잭션 LSN이고, 그렇지 않으면 log_recovery_lsn 검사point LSN입니다.
log_recovery_size_mb float 로그 복구 로그 시퀀스 번호(LSN) 이후의 로그 크기(MB)입니다.
recovery_vlf_count bigint 장애 조치(failover) 또는 서버 다시 시작이 있는 경우 복구할 총 VLF(가상 로그 파일)입니다.

설명

가용성 그룹에 보조 복제본(replica) 참여하는 데이터베이스에 대해 실행하는 sys.dm_db_log_stats 경우 위에서 설명한 필드의 하위 집합만 반환됩니다. 현재는 database_id보조 데이터베이스에 대해 실행될 때 반환 recovery_modellog_backup_time 됩니다.

사용 권한

데이터베이스에 대한 VIEW SERVER STATE 사용 권한이 필요합니다.

SQL Server 2022 이상에 대한 권한

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

예제

A. VLF 수가 많은 SQL Server 인스턴스에서 데이터베이스 확인

다음 쿼리는 로그 파일에 VLF가 100개 이상 있는 데이터베이스를 반환합니다. 많은 수의 VLL이 데이터베이스 시작, 복원 및 복구 시간에 영향을 줄 수 있습니다.

SELECT name AS 'Database Name', total_vlf_count AS 'VLF count' 
FROM sys.databases AS s
CROSS APPLY sys.dm_db_log_stats(s.database_id) 
WHERE total_vlf_count  > 100;

B. 트랜잭션 로그 백업이 4시간보다 오래된 SQL Server 인스턴스의 데이터베이스 확인

다음 쿼리는 인스턴스의 데이터베이스에 대한 마지막 로그 백업 시간을 결정합니다.

SELECT name AS 'Database Name', log_backup_time AS 'last log backup time' 
FROM sys.databases AS s
CROSS APPLY sys.dm_db_log_stats(s.database_id); 

참고 항목

동적 관리 뷰 및 함수(Transact-SQL)
데이터베이스 관련 동적 관리 뷰(Transact-SQL)
sys.dm_db_log_space_usage(Transact-SQL)
sys.dm_db_log_info(Transact-SQL)