Aracılığıyla paylaş


sys.dm_db_log_stats (Transact-SQL)

Şunlar için geçerlidir: SQL Server 2016 (13.x) SP2 ve sonraki sürümler Azure SQL DatabaseAzure SQL Managed InstanceSQL database in Microsoft Fabric

sys.dm_db_log_stats Dinamik yönetim işlevi, veritabanlarının işlem günlüğü dosyalarıyla ilgili özet düzeyi öznitelikleri ve bilgileri döndürür. Bu bilgiyi işlem günlüğünün sağlığının izlenmesi ve tanılaması için kullanın.

Transact-SQL söz dizimi kuralları

Sözdizimi

sys.dm_db_log_stats ( database_id )

Arguments

{ database_id | NULL | DEFAULT }

Veritabanının kimliği. database_idint. Geçerli girişler, NULLDEFAULTbir veritabanının veya kimlik numarasıdır. Varsayılan değer şudur: NULL. NULL ve DEFAULT mevcut veritabanı bağlamında eşdeğer değerlerdir.

ayrıca database_id için yerleşik işlev DB_ID belirtebilirsiniz.

Döndürülen tablolar

Sütun adı Veri türü Description
database_id int Veritabanı Kimliği.

Azure SQL Veritabanı'nda değerler tek bir veritabanı veya elastik havuz içinde benzersizdir, ancak mantıksal sunucu içinde değildir.
recovery_model nvarchar(60) Veritabanının kurtarma modeli. Olası değerler şunlardır:

SIMPLE
BULK_LOGGED
FULL
log_min_lsn 1 nvarchar(24) İşlem günlüğündeki geçerli başlangıç günlüğü sıra numarası (LSN).
log_end_lsn 1 nvarchar(24) işlem günlüğündeki son günlük kaydının günlük dizisi numarası (LSN).
current_vlf_sequence_number 2 bigint Yürütme sırasında geçerli sanal günlük dosyası (VLF) sıra numarası.
current_vlf_size_mb 2 float MB cinsinden geçerli sanal günlük dosyası (VLF) boyutu.
total_vlf_count 2 bigint İşlem günlüğündeki toplam sanal günlük dosyası (VLFs) sayısı.
total_log_size_mb float Toplam işlem logu boyutu MB cinsinden.
active_vlf_count 2 bigint İşlem günlüğündeki etkin sanal günlük dosyalarının (VLFs) toplam sayısı.
active_log_size_mb float Toplam aktif işlem logu boyutu MB cinsinden.
log_truncation_holdup_reason nvarchar(60) Log kesintisi gecikme nedeni. Değer log_reuse_wait_desc , 'nin sys.databasessütunuyla aynıdır. (Bu değerlerin daha ayrıntılı açıklamaları için bkz. İşlem günlüğü).
Olası değerler şunlardır:

NOTHING
CHECKPOINT
LOG_BACKUP
ACTIVE_BACKUP_OR_RESTORE
ACTIVE_TRANSACTION
DATABASE_MIRRORING
REPLICATION
DATABASE_SNAPSHOT_CREATION
LOG_SCAN
AVAILABILITY_REPLICA
OLDEST_PAGE
XTP_CHECKPOINT
OTHER TRANSIENT
log_backup_time datetime Son işlem günlüğü yedekleme başlangıç zamanı.
log_backup_lsn 1 nvarchar(24) Son işlem günlüğü yedekleme günlüğü sıra numarası (LSN).
log_since_last_log_backup_mb 1 float Son işlem günlüğü yedekleme günlük sırası numarasından (LSN) bu yana MB cinsinden günlük boyutu.
log_checkpoint_lsn 1 nvarchar(24) Son denetim noktası günlük sırası numarası (LSN).
log_since_last_checkpoint_mb 1 float Son denetim noktası günlük sırası numarasından (LSN) bu yana MB cinsinden günlük boyutu.
log_recovery_lsn 1 nvarchar(24) Veritabanının kurtarma günlüğü sıra numarası (LSN). Eğer log_recovery_lsn kontrol noktasından önce gerçekleşirse LSN, log_recovery_lsn en eski aktif işlem LSN'dir, aksi takdirde log_recovery_lsn kontrol noktası LSN'dir.
log_recovery_size_mb 1 float Günlük kurtarma günlük sırası numarasından (LSN) bu yana MB cinsinden günlük boyutu.
recovery_vlf_count 2 bigint Yük devretme veya sunucunun yeniden başlatılması durumunda kurtarılacak toplam sanal günlük dosyası (VLFs) sayısı.

1 Daha fazla bilgi için bkz. günlük sırası numarası (LSN).

2 Daha fazla bilgi için bkz. sanal günlük dosyası (VLF).

Açıklamalar

Bir kullanılabilirlik grubuna ikincil çoğaltma olarak katılan bir veritabanında çalıştırdığınızda sys.dm_db_log_stats , sorgu önceki tabloda açıklanan alanların yalnızca bir alt kümesini döndürür. Şu anda sorgu yalnızca database_id, recovery_modelve log_backup_time ikincil bir veritabanında çalıştırıldığında döndürür.

Permissions

SQL Server 2019 (15.x) ve önceki sürümler sunucuda izin gerektirir VIEW SERVER STATE .

SQL Server 2022 (16.x) ve sonraki sürümleri sunucuda izin gerektirir VIEW SERVER PERFORMANCE STATE .

Örnekler

A. Yüksek sayıda VLIF içeren bir SQL Server örneğindeki veritabanlarını belirleme

Aşağıdaki sorgu, log dosyalarında 100'den fazla VLF bulunan veritabanlarını döndürür. Çok sayıda VLF veritabanı başlatma, geri yükleme ve kurtarma süresini etkileyebilir.

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 saatten eski işlem günlüğü yedeklemeleriyle SQL Server örneğindeki veritabanlarını belirleme

Aşağıdaki sorgu, örnekteki veritabanları için son günlük yedekleme başlangıç zamanlarını belirler.

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