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

APLICA-SE A: simSQL Server simBanco de Dados SQL do Azure nãoSQL Data Warehouse do Azure nãoParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Retorna (VLF) do arquivo de log virtual informações do log de transações.Returns virtual log file (VLF) information of the transaction log. Observe que todos os arquivos de log de transações são combinados na saída de tabela.Note all transaction log files are combined in the table output. Cada linha na saída representa um VLF no log de transações e fornece informações relevantes para esse VLF no log.Each row in the output represents a VLF in the transaction log and provides information relevant to that VLF in the log.

SintaxeSyntax

sys.dm_db_log_info ( database_id )  

ArgumentosArguments

database_id | NULL | DEFAULTdatabase_id | NULL | DEFAULT
É a ID do banco de dados.Is the ID of the database. database_id é int. As entradas válidas são o número de identificação de um banco de dados, NULL ou padrão.database_id is int. Valid inputs are the ID number of a database, NULL, or DEFAULT. O padrão é NULO.The default is NULL. NULO e DEFAULT são valores equivalentes no contexto do banco de dados atual.NULL and DEFAULT are equivalent values in the context of current database.

Especifique NULL para retornar informações de VLF do banco de dados atual.Specify NULL to return VLF information of the current database.

A função interna DB_ID pode ser especificado.The built-in function DB_ID can be specified. Ao usar DB_ID sem especificar um nome de banco de dados, o nível de compatibilidade do banco de dados atual deve ser 90 ou superior.When using DB_ID without specifying a database name, the compatibility level of the current database must be 90 or greater.

Tabela retornadaTable Returned

Nome da colunaColumn name Tipo de dadosData type DescriçãoDescription
database_iddatabase_id intint ID do banco de dados.Database ID.
file_idfile_id smallintsmallint Id do arquivo de log de transações.File id of the transaction log.
vlf_begin_offsetvlf_begin_offset bigintbigint Deslocar o local do (VLF) do arquivo de log virtual desde o início do arquivo de log de transação.Offset location of the virtual log file (VLF) from the beginning of the transaction log file.
vlf_size_mbvlf_size_mb floatfloat arquivo de log virtual (VLF) tamanho em MB, arredondado para 2 casas decimais.virtual log file (VLF) size in MB, rounded to 2 decimal places.
vlf_sequence_numbervlf_sequence_number bigintbigint arquivo de log virtual (VLF) número na ordem de criação de sequência.virtual log file (VLF) sequence number in the created order. Usado para identificar exclusivamente VLFs no arquivo de log.Used to uniquely identify VLFs in log file.
vlf_activevlf_active bitbit Indica se (VLF) do arquivo de log virtual está em uso ou não.Indicates whether virtual log file (VLF) is in use or not.
0 - VLF não está em uso.0 - VLF is not in use.
1 - VLF está ativo.1 - VLF is active.
vlf_statusvlf_status intint Status do (VLF) do arquivo de log virtual.Status of the virtual log file (VLF). Os valores possíveis incluemPossible values include
0 - VLF está inativo0 - VLF is inactive
1 - VLF é inicializado, mas não utilizado1 - VLF is initialized but unused
2 - VLF está ativo.2 - VLF is active.
vlf_parityvlf_parity tinyinttinyint Paridade (VLF) do arquivo de log virtual. Usada internamente para determinar o final do log em um 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) Log (LSN) do número de sequência do primeiro registro de log em de (VLF) do arquivo de log virtual.Log sequence number (LSN) of the first log record in the virtual log file (VLF).
vlf_create_lsnvlf_create_lsn nvarchar(48)nvarchar(48) Log (LSN) do número de sequência do log de registro que criou o (VLF) do arquivo de log virtual.Log sequence number (LSN) of the log record that created the virtual log file (VLF).
vlf_encryptor_thumbprintvlf_encryptor_thumbprint varbinary(20)varbinary(20) Aplica-se a: SQL Server 2019SQL Server 2019Applies to: SQL Server 2019SQL Server 2019

Mostra a impressão digital do Criptografador do VLF se o VLF é criptografado usando Transparent Data Encryption, caso contrário, nulo.Shows the thumbprint of the encryptor of the VLF if the VLF is encrypted using Transparent Data Encryption, otherwise NULL.

ComentáriosRemarks

O sys.dm_db_log_info função de gerenciamento dinâmico substitui o DBCC LOGINFO instrução.The sys.dm_db_log_info dynamic management function replaces the DBCC LOGINFO statement.

PermissõesPermissions

Requer a VIEW DATABASE STATE permissão no banco de dados.Requires the VIEW DATABASE STATE permission in the database.

ExemplosExamples

A.A. Determinando os bancos de dados em uma instância do SQL Server com grande número de VLFsDeterming databases in a SQL Server instance with high number of VLFs

A consulta a seguir determina os bancos de dados com mais de 100 VLFs nos arquivos de log, que podem afetar o tempo de inicialização, restauração e recuperação de banco de dados.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. Determinando a posição do último VLF no log de transações antes de reduzir o arquivo de logDeterming the position of the last VLF in transaction log before shrinking the log file

A consulta a seguir pode ser usada para determinar a posição do último VLF Active Directory antes de executar shrinkfile no log de transações para determinar se o log de transações pode ser reduzido.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

Consulte tambémSee Also

Exibições e funções de gerenciamento dinâmico (Transact-SQL) Dynamic Management Views and Functions (Transact-SQL)
Banco de dados relacionados a exibições de gerenciamento dinâmico (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)