合 MSSQL查看事务日志的虚拟日志文件(VLF)信息sys.dm_db_log_info
Tags: MSSQLSQL Serversys.dm_db_log_info虚拟日志文件(VLF)
简介
返回事务日志的虚拟日志文件 (VLF) 信息。 请注意,所有事务日志文件都合并在表输出中。 输出中的每行均表示事务日志中的 VLF,并提供与日志中该 VLF 相关的信息。
虚拟日志文件 (VLF)
SQL Server 数据库引擎在内部将每个物理日志文件分成多个虚拟日志文件 (VLF)。 虚拟日志文件没有固定大小,且物理日志文件所包含的虚拟日志文件数不固定。 数据库引擎在创建或扩展日志文件时动态选择虚拟日志文件的大小。 数据库引擎会尝试维护一些虚拟文件。 在扩展日志文件后,虚拟文件的大小是现有日志大小和新文件增量大小之和。 管理员不能配置或设置虚拟日志文件的大小或数量。
语法
1 | sys.dm_db_log_info ( database_id ) |
参数
database_id | NULL | DEFAULT
数据库的 ID。 database_id 是 int。有效的输入包括数据库的 ID 号、NULL 或 DEFAULT。 默认值为 NULL。 NULL 和 DEFAULT 是当前数据库的上下文中的等效值。
指定 NULL 可返回当前数据库的 VLF 信息。
你可以指定内置函数 DB_ID。 如果在不指定数据库名称的情况下使用 DB_ID
,则当前数据库的兼容级别必须是 90 或更高。
返回的表
展开表
列名称 | 数据类型 | 描述 |
---|---|---|
database_id | int | 数据库 ID。 在 Azure SQL 数据库中,这些值在单一数据库或弹性池中是唯一的,但在逻辑服务器中不是唯一的。 |
file_id | smallint | 事务日志的文件 ID。 |
vlf_begin_offset | bigint | 虚拟日志文件 (VLF) 相对于事务日志文件开头的偏移位置。 |
vlf_size_mb | float | 虚拟日志文件 (VLF)大小(以 MB 为单位),舍入为两位小数。 |
vlf_sequence_number | bigint | 虚拟日志文件 (VLF) 序列号(按已创建的顺序)。 用于唯一标识日志文件中的 VLF。 |
vlf_active | bit | 指示虚拟日志文件 (VLF)是否正在使用。 0 - VLF 未使用。 1 - VLF 处于活动状态。 |
vlf_status | int | 虚拟日志文件 (VLF) 的状态。 可能的值包括 0 - VLF 处于非活动状态 1 - VLF 已初始化,但未使用 2 - VLF 处于活动状态。 |
vlf_parity | tinyint | 虚拟日志文件 (VLF)的奇偶校验。 在内部用于确定 VLF 内的日志结尾。 |
vlf_first_lsn | nvarchar(48) | 虚拟日志文件 (VLF) 中第一条日志记录的日志序列号 (LSN)。 |
vlf_create_lsn | nvarchar(48) | 创建虚拟日志文件 (VLF) 的日志记录的日志序列号 (LSN)。 |
vlf_encryptor_thumbprint | varbinary(20) | 适用于:SQL Server 2019 (15.x) 及更高版本 如果 VLF 使用透明数据加密进行加密,则显示 VLF 加密器的指纹,否则显示 NULL 。 |
注解
sys.dm_db_log_info
动态管理函数将替换 DBCC LOGINFO
语句。
SQL Server 事务日志体系结构和管理指南中详细介绍了根据增长事件创建多少个 VLF 的公式。 从 SQL Server 2022 (16.x) 开始,此公式略有更改。
权限
需要数据库中的 VIEW SERVER STATE
权限。