---
title: "sys.dm_db_log_info (Transact-SQL) | Microsoft Docs"
ms.custom: ""
ms.date: "08/16/2017"
ms.prod: "sql-non-specified"
ms.reviewer: ""
ms.suite: ""
ms.technology:
- "database-engine"
ms.tgt_pltfrm: ""
ms.topic: "article"
f1_keywords:
- "sys.dm_db_log_info"
- "sys.dm_db_log_info_TSQL"
- "dm_db_log_info"
- "dm_db_log_info_TSQL"
dev_langs:
- "TSQL"
helpviewer_keywords:
- "sys.dm_db_log_info dynamic management view"
ms.assetid: f6b40060-c17d-472f-b0a3-3b350275d487
caps.latest.revision: 4
author: "savjani"
ms.author: "pariks"
manager: "ajayj"
---
# sys.dm_db_log_info (Transact-SQL)
[!INCLUDE[tsql-appliesto-ssvnxt-xxxx-xxxx-xxx.md](../../includes/tsql-appliesto-ssvnxt-xxxx-xxxx-xxx.md)]
Returns `VLF` information of the transaction log files. (All log files are combined in the table output). Each row in the output represents a `VLF` in the transaction log and provides information relevant to that VLF in the log.
## Syntax
```
sys.dm_db_log_info ( database_id )
```
## Arguments
*database_id* | NULL | DEFAULT
Is the ID of the database. *database_id* is **int**. Valid inputs are the ID number of a database, NULL, or DEFAULT. The default is NULL. NULL and DEFAULT are equivalent values in the context of current database.
Specify NULL to return `VLF` information of the current database.
The built-in function [DB_ID](../../t-sql/functions/db-id-transact-sql.md) can be specified. When using DB_ID without specifying a database name, the compatibility level of the current database must be 90 or greater.
## Table Returned
|Column name|Data type|Description|
|-----------------|---------------|-----------------|
|database_id|**int**|Database ID.|
|file_id|**smallint**|File id of the transaction log.|
|vlf_begin_offset|**bigint** |Offset location of the `VLF` from the beginning of the transaction log file.|
|vlf_size_mb |**float** |`VLF` size in MB rounded to 2 decimal places.|
|vlf_sequence_number|**bigint** |`VLF` sequence number in the created order. Used to uniquely identify `VLFs` in log file.|
|vlf_active|**bit** |Indicates whether VLF is in use or not.
0 - vlf is not in use.
1 - `VLF` is active.|
|vlf_status|**int** |Status of the `VLF`. Possible values include
0 - `VLF` is inactive
1 - vlf is initialized but unused
2 - `VLF` is active.|
|vlf_parity|**tinyint** |Parity of `VLF`.Used internally to determine the end of log within a `VLF`.|
|vlf_first_lsn|**nvarchar(48)** |LSN of the first log record in the `VLF`.|
|vlf_create_lsn|**nvarchar(48)** |LSN of the log record that created the `VLF`.|
## Remarks
The `sys.dm_db_log_info` dynamic management function replaces the `DBCC LOGINFO` statement.
## Permissions
Requires the `VIEW DATABASE STATE` permission in the database.
## Examples
### A. Determing databases in a SQL Server instance with high number of `VLFs`
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.
```sql
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. Determing the status of last `VLF` in transaction log before shrinking the log file
The following query can be used to determine the status of last `VLF` before running shrinkfile on transaction log to determine if transaction log can shrink.
```sql
USE
GO
SELECT top 1 DB_NAME(database_id) as "Database Name",file_id,vlf_size_mb,vlf_sequence_number, vlf_active, vlf_status
from sys.dm_db_log_info(DEFAULT)
order by vlf_sequence_number desc
```
## See Also
[Dynamic Management Views and Functions (Transact-SQL)](~/relational-databases/system-dynamic-management-views/system-dynamic-management-views.md)
[Database Related Dynamic Management Views (Transact-SQL)](../../relational-databases/system-dynamic-management-views/database-related-dynamic-management-views-transact-sql.md)
[sys.dm_db_log_space_usage](../../relational-databases/system-dynamic-management-views/sys-dm-db-log-space-usage-transact-sql.md)