sys.dm_db_log_stats(Transact-SQL)
적용 대상: SQL Server 2016 (13.x) SP 2 이상 Azure SQL 데이터베이스 Azure SQL Managed Instance
데이터베이스의 트랜잭션 로그 파일에 대한 요약 수준 특성 및 정보를 반환합니다. 트랜잭션 로그 상태를 모니터링하고 진단하는 데 이 정보를 사용합니다.
구문
sys.dm_db_log_stats ( database_id )
인수
database_id | NULL | 기본값
데이터베이스의 ID입니다. database_id
은 int
입니다. 유효한 입력은 데이터베이스 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_checkpoint_lsn | nvarchar(24) | 마지막 검사점 LSN(로그 시퀀스 번호)입니다. |
log_since_last_checkpoint_mb | float | 마지막 검사점 LSN(로그 시퀀스 번호) 이후의 로그 크기(MB)입니다. |
log_recovery_lsn | nvarchar(24) | 데이터베이스의 LSN(복구 로그 시퀀스 번호) 입니다. 검사점 LSN log_recovery_lsn 이전에 발생하는 경우 log_recovery_lsn 가장 오래된 활성 트랜잭션 LSN이고, 그렇지 않으면 log_recovery_lsn 검사점 LSN입니다. |
log_recovery_size_mb | float | 로그 복구 로그 시퀀스 번호(LSN) 이후의 로그 크기(MB)입니다. |
recovery_vlf_count | bigint | 장애 조치(failover) 또는 서버 다시 시작이 있는 경우 복구할 총 VLF(가상 로그 파일) 수입니다. |
설명
가용성 그룹에 보조 복제본으로 참여하는 데이터베이스에 대해 실행하는 sys.dm_db_log_stats
경우 위에서 설명한 필드의 하위 집합만 반환됩니다. 현재는 database_id
보조 데이터베이스에 대해 실행될 때 반환 recovery_model
log_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)