sys.dm_db_log_stats (Transact-SQL)
适用于:SQL Server 2016 (13.x) 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。 在 Azure SQL 数据库中,这些值在单一数据库或弹性池中是唯一的,但在逻辑服务器中不是唯一的。 |
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 | 事务日志中的虚拟日志文件(VFS)总数。 |
total_log_size_mb | float | 事务日志总大小(以 MB 为单位)。 |
active_vlf_count | bigint | 事务日志中的活动 虚拟日志文件(VFS) 总数。 |
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 | 如果发生故障转移或服务器重启,则恢复的虚拟日志文件(VDF)总数。 |
注解
针对作为次要副本参与可用性组的数据库运行时 sys.dm_db_log_stats
,将只返回上述字段的子集。 目前,仅database_id
针对recovery_model
log_backup_time
辅助数据库运行时,将返回该数据库。
权限
需要数据库中的 VIEW SERVER STATE
权限。
SQL Server 2022 及更高版本的权限
要求对服务器具有 VIEW SERVER PERFORMANCE STATE 权限。
示例
A. 确定 SQL Server 实例中具有大量 VDF 的数据库
以下查询返回日志文件中具有 100 多个 VLAN 的数据库。 大量 VDF 可能会影响数据库启动、还原和恢复时间。
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)