Bagikan melalui


sys.dm_db_log_stats (T-SQL)

Berlaku untuk: SQL Server 2016 (13.x) SP2 dan versi yang lebih baru Azure SQL DatabaseAzure SQL Managed Instance SQL database SQL di Microsoft Fabric

Fungsi sys.dm_db_log_stats manajemen dinamis mengembalikan atribut tingkat ringkasan dan informasi tentang file log transaksi database. Gunakan informasi ini untuk pemantauan dan diagnostik kesehatan log transaksi.

Konvensi sintaks transact-SQL

Sintaks

sys.dm_db_log_stats ( database_id )

Argumen

{ database_id | NULL | DEFAULT }

ID database. database_idint. Input yang valid adalah nomor ID database, , NULLatau DEFAULT. Nilai defaultnya adalah NULL. NULL dan DEFAULT merupakan nilai yang setara dalam konteks database saat ini.

Anda juga dapat menentukan DB_ID fungsi bawaan untuk database_id.

Tabel dikembalikan

Nama kolom Jenis data Deskripsi
database_id int ID Database.

Di Azure SQL Database, nilainya unik dalam satu database atau kumpulan elastis, tetapi tidak dalam server logis.
recovery_model nvarchar(60) Model pemulihan database. Nilai yang mungkin termasuk:

SIMPLE
BULK_LOGGED
FULL
log_min_lsn 1 nvarchar(24) Nomor urutan log awal (LSN) saat ini dalam log transaksi.
log_end_lsn 1 nvarchar(24) nomor urutan log (LSN) dari catatan log terakhir dalam log transaksi.
current_vlf_sequence_number 2 bigint Nomor urutan file log virtual (VLF) saat ini pada saat eksekusi.
current_vlf_size_mb 2 float Ukuran file log virtual (VLF) saat ini dalam MB.
total_vlf_count 2 bigint Jumlah total file log virtual (VLF) dalam log transaksi.
total_log_size_mb float Total ukuran log transaksi dalam MB.
active_vlf_count 2 bigint Jumlah total file log virtual aktif (VLF) dalam log transaksi.
active_log_size_mb float Total ukuran log transaksi aktif dalam MB.
log_truncation_holdup_reason nvarchar(60) Alasan penahanan pemotongan log. Nilainya sama dengan log_reuse_wait_desc kolom sys.databases. (Untuk penjelasan lebih rinci tentang nilai-nilai ini, lihat Log transaksi).
Nilai yang mungkin termasuk:

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 Waktu mulai pencadangan log transaksi terakhir.
log_backup_lsn 1 nvarchar(24) Nomor urutan log cadangan log transaksi terakhir (LSN).
log_since_last_log_backup_mb 1 float Ukuran log dalam MB sejak nomor urutan log cadangan log transaksi terakhir (LSN).
log_checkpoint_lsn 1 nvarchar(24) Nomor urutan log titik pemeriksaan terakhir (LSN).
log_since_last_checkpoint_mb 1 float Ukuran log dalam MB sejak nomor urutan log titik pemeriksaan terakhir (LSN).
log_recovery_lsn 1 nvarchar(24) Nomor urutan log pemulihan (LSN) database. Jika log_recovery_lsn terjadi sebelum LSN titik pemeriksaan, log_recovery_lsn adalah LSN transaksi aktif terlama, jika tidak log_recovery_lsn , adalah LSN titik pemeriksaan.
log_recovery_size_mb 1 float Ukuran log dalam MB sejak nomor urutan log pemulihan log (LSN).
recovery_vlf_count 2 bigint Jumlah total file log virtual (VLF) yang akan dipulihkan, jika ada failover atau mulai ulang server.

1 Untuk informasi selengkapnya, lihat nomor urutan log (LSN).

2 Untuk informasi selengkapnya, lihat file log virtual (VLF).

Keterangan

Saat Anda menjalankan sys.dm_db_log_stats database yang berpartisipasi dalam grup ketersediaan sebagai replika sekunder, kueri hanya mengembalikan subset bidang yang dijelaskan dalam tabel sebelumnya. Saat ini, kueri hanya database_idmengembalikan , recovery_model, dan log_backup_time saat dijalankan terhadap database sekunder.

Izin

SQL Server 2019 (15.x) dan versi yang lebih lama memerlukan VIEW SERVER STATE izin di server.

SQL Server 2022 (16.x) dan versi yang lebih baru memerlukan VIEW SERVER PERFORMANCE STATE izin di server.

Contoh

J. Menentukan database dalam instans SQL Server dengan jumlah VLF yang tinggi

Kueri berikut mengembalikan database dengan lebih dari 100 VLF dalam file log. Sejumlah besar VLF dapat memengaruhi waktu mulai, pemulihan, dan pemulihan database.

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. Menentukan database dalam instans SQL Server dengan cadangan log transaksi yang lebih lama dari 4 jam

Kueri berikut menentukan waktu mulai pencadangan log terakhir untuk database dalam instans.

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);