sys.dm_db_log_info (Transact-SQL)sys.dm_db_log_info (Transact-SQL)

Se aplica a: Sí(a partir de 2016 SP2) de SQL Server SíAzure SQL Database ningúnAzure SQL Data Warehouse ningún Almacenamiento de datos paralelos APPLIES TO: yesSQL Server (starting with 2016 SP2) yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Devuelve archivo de registro virtual (VLF) información del registro de transacciones.Returns virtual log file (VLF) information of the transaction log. Tenga en cuenta que todos los archivos de registro de transacciones se combinan en la salida de tabla.Note all transaction log files are combined in the table output. Cada fila de la salida representa un VLF del registro de transacciones y proporciona información pertinente para ese VLF en el registro.Each row in the output represents a VLF in the transaction log and provides information relevant to that VLF in the log.

SintaxisSyntax

sys.dm_db_log_info ( database_id )  

ArgumentosArguments

database_id | NULL | VALOR PREDETERMINADOdatabase_id | NULL | DEFAULT
Es el identificador de la base de datos.Is the ID of the database. database_id es int. Las entradas válidas son el número de Id. de una base de datos, NULL o de forma predeterminada.database_id is int. Valid inputs are the ID number of a database, NULL, or DEFAULT. El valor predeterminado es NULL.The default is NULL. NULL y DEFAULT son valores equivalentes en el contexto de base de datos actual.NULL and DEFAULT are equivalent values in the context of current database.

Especifique NULL para devolver información de VLF de la base de datos actual.Specify NULL to return VLF information of the current database.

La función integrada DB_ID se pueden especificar.The built-in function DB_ID can be specified. Cuando se usa DB_ID sin especificar un nombre de base de datos, el nivel de compatibilidad de la base de datos actual debe ser 90 o superior.When using DB_ID without specifying a database name, the compatibility level of the current database must be 90 or greater.

Tabla devueltaTable Returned

Nombre de columnaColumn name Tipo de datosData type DescripciónDescription
database_iddatabase_id intint Id. de la base de datos.Database ID.
file_idfile_id smallintsmallint Id. de archivo del registro de transacciones.File id of the transaction log.
vlf_begin_offsetvlf_begin_offset bigintbigint Desplazar la ubicación de la archivo de registro virtual (VLF) desde el principio del archivo de registro de transacciones.Offset location of the virtual log file (VLF) from the beginning of the transaction log file.
vlf_size_mbvlf_size_mb floatfloat archivo de registro virtual (VLF) tamaño en MB, se redondea a 2 posiciones decimales.virtual log file (VLF) size in MB, rounded to 2 decimal places.
vlf_sequence_numbervlf_sequence_number bigintbigint archivo de registro virtual (VLF) secuencia numérica en el orden creado.virtual log file (VLF) sequence number in the created order. Se usa para identificar de forma exclusiva VLF en el archivo de registro.Used to uniquely identify VLFs in log file.
vlf_activevlf_active bitbit Indica si archivo de registro virtual (VLF) está en uso o no.Indicates whether virtual log file (VLF) is in use or not.
0 - VLF no está en uso.0 - VLF is not in use.
1 - VLF está activo.1 - VLF is active.
vlf_statusvlf_status intint Estado de la archivo de registro virtual (VLF).Status of the virtual log file (VLF). Los valores posibles incluyenPossible values include
0 - VLF está inactivo0 - VLF is inactive
1 - VLF está inicializado, pero sin utilizar1 - VLF is initialized but unused
2 - VLF está activo.2 - VLF is active.
vlf_parityvlf_parity tinyinttinyint Paridad de archivo de registro virtual (VLF). Se usa internamente para determinar el final del registro dentro de un VLF.Parity of virtual log file (VLF).Used internally to determine the end of log within a VLF.
vlf_first_lsnvlf_first_lsn nvarchar(48)nvarchar(48) Registro (LSN) del número de secuencia de la primera entrada del registro en el archivo de registro virtual (VLF).Log sequence number (LSN) of the first log record in the virtual log file (VLF).
vlf_create_lsnvlf_create_lsn nvarchar(48)nvarchar(48) Registro (LSN) del número de secuencia del registro de registro que creó el archivo de registro virtual (VLF).Log sequence number (LSN) of the log record that created the virtual log file (VLF).
vlf_encryptor_thumbprintvlf_encryptor_thumbprint varbinary(20)varbinary(20) Se aplica a: Versión preliminar de SQL Server 2019SQL Server 2019 previewApplies to: Versión preliminar de SQL Server 2019SQL Server 2019 preview

Muestra la huella digital del sistema de cifrado de la VLF si el VLF se cifra mediante cifrado de datos transparente, de lo contrario, NULL.Shows the thumbprint of the encryptor of the VLF if the VLF is encrypted using Transparent Data Encryption, otherwise NULL.

ComentariosRemarks

El sys.dm_db_log_info función de administración dinámica reemplaza el DBCC LOGINFO instrucción.The sys.dm_db_log_info dynamic management function replaces the DBCC LOGINFO statement.

PermisosPermissions

Requiere el VIEW DATABASE STATE permiso en la base de datos.Requires the VIEW DATABASE STATE permission in the database.

EjemplosExamples

A.A. Determinación bases de datos en una instancia de SQL Server con un gran número de VLFDeterming databases in a SQL Server instance with high number of VLFs

La siguiente consulta determina las bases de datos con más de 100 VLF en los archivos de registro, lo que pueden afectar a la hora de inicio, restauración y recuperación de base de datos.The following query determines the databases with more than 100 VLFs in the log files, which can affect the database startup, restore, and recovery time.

SELECT [name], COUNT(l.database_id) AS 'vlf_count' 
FROM sys.databases s
CROSS APPLY sys.dm_db_log_info(s.database_id) l
GROUP BY [name]
HAVING COUNT(l.database_id) > 100

B.B. Determinar la posición del último VLF en el registro de transacciones antes de reducir el archivo de registroDeterming the position of the last VLF in transaction log before shrinking the log file

La consulta siguiente puede utilizarse para determinar la posición del último VLF activo antes de ejecutar shrinkfile en el registro de transacciones para determinar si puede reducir el registro de transacciones.The following query can be used to determine the position of the last active VLF before running shrinkfile on transaction log to determine if transaction log can shrink.

USE AdventureWorks2016
GO

;WITH cte_vlf AS (
SELECT ROW_NUMBER() OVER(ORDER BY vlf_begin_offset) AS vlfid, DB_NAME(database_id) AS [Database Name], vlf_sequence_number, vlf_active, vlf_begin_offset, vlf_size_mb
    FROM sys.dm_db_log_info(DEFAULT)),
cte_vlf_cnt AS (SELECT [Database Name], COUNT(vlf_sequence_number) AS vlf_count,
    (SELECT COUNT(vlf_sequence_number) FROM cte_vlf WHERE vlf_active = 0) AS vlf_count_inactive,
    (SELECT COUNT(vlf_sequence_number) FROM cte_vlf WHERE vlf_active = 1) AS vlf_count_active,
    (SELECT MIN(vlfid) FROM cte_vlf WHERE vlf_active = 1) AS ordinal_min_vlf_active,
    (SELECT MIN(vlf_sequence_number) FROM cte_vlf WHERE vlf_active = 1) AS min_vlf_active,
    (SELECT MAX(vlfid) FROM cte_vlf WHERE vlf_active = 1) AS ordinal_max_vlf_active,
    (SELECT MAX(vlf_sequence_number) FROM cte_vlf WHERE vlf_active = 1) AS max_vlf_active
    FROM cte_vlf
    GROUP BY [Database Name])
SELECT [Database Name], vlf_count, min_vlf_active, ordinal_min_vlf_active, max_vlf_active, ordinal_max_vlf_active,
((ordinal_min_vlf_active-1)*100.00/vlf_count) AS free_log_pct_before_active_log,
((ordinal_max_vlf_active-(ordinal_min_vlf_active-1))*100.00/vlf_count) AS active_log_pct,
((vlf_count-ordinal_max_vlf_active)*100.00/vlf_count) AS free_log_pct_after_active_log
FROM cte_vlf_cnt
GO

Vea tambiénSee Also

Funciones y vistas de administración dinámica (Transact-SQL) Dynamic Management Views and Functions (Transact-SQL)
Vistas de administración dinámica relacionadas con la base de datos (Transact-SQL) Database Related Dynamic Management Views (Transact-SQL)
sys.dm_db_log_space_usage (Transact-SQL) sys.dm_db_log_space_usage (Transact-SQL)
sys.dm_db_log_stats (Transact-SQL)sys.dm_db_log_stats (Transact-SQL)