sys.dm_db_log_stats (Transact-SQL)

适用于: SQL Server 2016 SP 2 及更高版本 Azure SQL 数据库 Azure Synapse Analytics 并行数据仓库

返回数据库的事务日志文件的摘要级别属性和信息。 使用此信息监视和诊断事务日志的运行状况。

主题链接图标 Transact-SQL 语法约定

语法

 sys.dm_db_log_stats ( database_id )

参数

database_id |NULL | 默认值

数据库的 ID。 database_idint。 有效的输入包括数据库的 ID 号、 NULLDEFAULT 。 默认值为 NULLNULL 和在 DEFAULT 当前数据库的上下文中是等效值。
可以指定内置函数 DB_ID。 如果在 DB_ID 不指定数据库名称的情况下使用,则当前数据库的兼容级别必须为90或更高。

返回的表

列名称 数据类型 说明
database_id int 数据库 ID
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) 日志截断暂留原因。 该值与 log_reuse_wait_desc 的列相同 sys.databases 。 有关这些值的更详细说明,请参阅 事务日志) 的 (。
可能的值包括:
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 datetime 上次事务日志备份时间。
log_backup_lsn nvarchar(24) 上次事务日志备份 日志序列号 (LSN)
log_since_last_log_backup_mb float 自上一次事务日志备份日志序列号后,日志大小(MB) ) (LSN
log_checkpoint_lsn nvarchar(24) LSN) (的最后一个检查点 日志序列号
log_since_last_checkpoint_mb float 自上次检查点 日志序列号 (LSN) 后的日志大小(MB)。
log_recovery_lsn nvarchar(24) 数据库 (LSN) 的恢复日志序列号 。 如果在 log_recovery_lsn 检查点 lsn 之前出现, log_recovery_lsn 则是最早的活动事务 LSN,否则 log_recovery_lsn 是检查点 lsn。
log_recovery_size_mb float 日志大小(MB),因为日志恢复 日志序列号 (LSN)
recovery_vlf_count bigint 在故障转移或服务器重新启动时, (要恢复 ) 的虚拟日志文件 的总数。

备注

sys.dm_db_log_stats针对作为辅助副本参与可用性组的数据库运行时,将只返回上述字段的子集。 目前,在针对辅助数据库运行时,将仅 database_id recovery_model 返回 、 和 log_backup_time

权限

需要 VIEW DATABASE STATE 数据库中的 权限。

示例

A. 确定具有大量 SQL Server VLF 的实例中的数据库

以下查询返回日志文件中 100 多个 VLF 的数据库。 大量 VLF 可能会影响数据库启动、还原和恢复时间。

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)