Partilhar via


sys.dm_db_log_stats (Transact-SQL)

Aplica-se a: SQL Server 2016 (13.x) SP2 e versões posteriores Azure SQL Database AzureSQL Managed InstanceSQL database em Microsoft Fabric

Devolve atributos ao nível de sumário e informação nos ficheiros de registo de transações das bases de dados. Use esta informação para monitorizar e diagnosticar o estado dos registos de transações.

Transact-SQL convenções de sintaxe

Sintaxe

 sys.dm_db_log_stats ( database_id )

Arguments

database_id | NULL | PADRÃO

É o ID da base de dados. database_id é int. Entradas válidas são o número ID de uma base de dados, NULL, ou DEFAULT. A predefinição é NULL. NULL e DEFAULT são valores equivalentes no contexto da base de dados atual.
A função interna DB_ID pode ser especificada. Ao usar DB_ID sem especificar um nome de base de dados, o nível de compatibilidade da base de dados atual deve ser 90 ou superior.

Tabelas Devolvidas

Nome da coluna Tipo de dados Description
database_id int ID da base de dados.

No Banco de Dados SQL do Azure, os valores são exclusivos em um único banco de dados ou pool elástico, mas não em um servidor lógico.
recovery_model nvarchar(60) Modelo de recuperação da base de dados. Os valores possíveis incluem:
SIMPLES
BULK_LOGGED
COMPLETO
log_min_lsn Nvarchar(24) Número de sequência do registo de início (LSN) atual no registo de transações.
log_end_lsn Nvarchar(24) número de sequência log (LSN) do último registo log no log de transações.
current_vlf_sequence_number bigint Número de sequência atual do ficheiro de registo virtual (VLF ) no momento da execução.
current_vlf_size_mb float Tamanho atual do ficheiro de registo virtual (VLF) em MB.
total_vlf_count bigint Número total de ficheiros de registo virtuais (VLFs) no registo de transações.
total_log_size_mb float Tamanho total do log de transações em MB.
active_vlf_count bigint Número total de ficheiros de registo virtual (VLFs ) ativos no registo de transações.
active_log_size_mb float Tamanho total de registo de transações ativas em MB.
log_truncation_holdup_reason nvarchar(60) Razão do truncamento do troncado. O valor é igual ao log_reuse_wait_desc da coluna de sys.databases. (Para explicações mais detalhadas destes valores, veja O Registo de Transações).
Os valores possíveis incluem:
NADA
CHECKPOINT
LOG_BACKUP
ACTIVE_BACKUP_OR_RESTORE
ACTIVE_TRANSACTION
Espelhamento de Base de Dados
REPLICAÇÃO
DATABASE_SNAPSHOT_CREATION
LOG_SCAN
AVAILABILITY_REPLICA
OLDEST_PAGE
XTP_CHECKPOINT
OUTROS TRANSITÓRIOS
log_backup_time datetime Último tempo de backup do registo de transações.
log_backup_lsn Nvarchar(24) Número de sequência do registo de backup do último registo de transação (LSN).
log_since_last_log_backup_mb float Tamanho do log em MB desde o número de sequência do registo de backup (LSN) do registo da última transação.
log_checkpoint_lsn Nvarchar(24) Último ponto de controlo número de sequência (LSN).
log_since_last_checkpoint_mb float Tamanho do log em MB desde o último número de sequência log point (LSN).
log_recovery_lsn Nvarchar(24) Número de sequência do registo de recuperação (LSN) da base de dados. Se log_recovery_lsn ocorrer antes do LSN do ponto de controlo, log_recovery_lsn é o LSN de transação ativo mais antigo, caso contrário log_recovery_lsn é o LSN do ponto de controlo.
log_recovery_size_mb float Tamanho do log em MB desde o número de sequência de log (LSN) para a recuperação de log.
recovery_vlf_count bigint Número total de ficheiros de registo virtuais (VLFs) a recuperar, caso haja failover ou reinício do servidor.

Observações

Ao correr sys.dm_db_log_stats contra uma base de dados que participa num Grupo de Disponibilidade como réplica secundária, apenas um subconjunto dos campos descritos acima será devolvido. Atualmente, apenas database_id, recovery_model, e log_backup_time serão devolvidos quando executados contra uma base de dados secundária.

Permissions

Requer a VIEW SERVER STATE permissão na base de dados.

Permissões para SQL Server 2022 e posterior

Requer a permissão VIEW SERVER PERFORMANCE STATE no servidor.

Examples

A. Determinar bases de dados numa instância SQL Server com um elevado número de VLFs

A consulta seguinte devolve as bases de dados com mais de 100 VLFs nos ficheiros de log. Um grande número de VLFs pode afetar o tempo de arranque, restauração e recuperação da base de dados.

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. Determinar bases de dados numa instância SQL Server com backups de registos de transações com mais de 4 horas

A consulta seguinte determina os últimos tempos de backup de log para as bases de dados na instância.

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); 

Ver também

Visões e funções de gerenciamento dinâmico (Transact-SQL)
Exibições de gerenciamento dinâmico relacionadas ao banco de dados (Transact-SQL)
sys.dm_db_log_space_usage (Transact-SQL)
sys.dm_db_log_info (Transact-SQL)