sys.dm_db_log_stats (Transact-SQL)
适用于:SQL Server 2016 SP 2 及更高版本
Azure SQL 数据库
Azure SQL 托管实例
返回有关数据库的事务日志文件的摘要级别属性和信息。 使用此信息监视和诊断事务日志运行状况。
语法
sys.dm_db_log_stats ( database_id )
参数
database_id |NULL | 默认
数据库的 ID。 database_id
为 int
。 有效输入是数据库的 ID 号、 NULL
或 DEFAULT
。 默认值为 NULL
。 NULL
和 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 | 自上次事务日志备份 日志序列号 (LSN) 以来的 日志大小(以 MB 为单位)。 |
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 | 如果发生故障转移或服务器重启,则) 要恢复的 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 个的数据库。 大量 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)