This article is a sub-topic of the previous article, Recover Deleted Table Data "without Backup" in SQL Server, So we have the structure of articles like this.
Introduction
In the previous article, Recover Deleted Table Data "without Backup" in SQL Server, we recovered table records with LSN (Log Sequence Number). In this article, we will discuss a little bit more detail about LSN, the Retrieved function fn_dblog(), and the related Recovery Models.
- Introduction
- SQL Server Transaction Log
- LSN Retrieving Function from Transaction Log
- Operation Clumn in fn_dblog()
- Recovery Models
- Recovery Option
SQL Server Transaction Log
Every SQL Server database has a transaction log that records all transactions and the database modifications that are made by each transaction. The transaction log is a critical component of the database, and if there's a system failure, the transaction log might be required to bring your database back to a consistent state.
The SQL Server Transaction Log plays an important role in recovering deleted or modified data if you mistakenly perform a DELETE or UPDATE operation with the wrong condition or badly without filtration condition. This can be achieved by listening to the records stored inside the SQL Server Transaction Log file. The events that are written to the SQL Server Transaction Log file, without any additional configuration required from the database administrator side, include the different types of DML operations, such as INSERT, UPDATE, and DELETE statements, and DDL operations, such as CREATE and DROP statements.
LSN Retrieving Function from Transaction Log
Function fn_dblog()
The fn_dblog() function is one of several undocumented functions for SQL Server; it allows you to view the transaction log records in the active part of the transaction log file.
fn_dblog() Parameters
The fn_dblog() function accepts two parameters.
- The first is the starting log sequence number or LSN. You can also specify NULL, which means it will return everything from the start of the log.
- The second is the ending LSN. You can also specify NULL, which means you want to return everything to the end of the log.
fn_db_log()
SELECT * FROM fn_dblog (
NULL, -- Start LSN nvarchar(25)
NULL -- End LSN nvarchar(25)
)
We will not discuss the details of the function but list the possibly useful columns below:

Operation Clumn in fn_dblog()
The ‘Operation’ column indicates the type of operation that has been performed and logged in the transaction log file.

Such as test.
LOP_INSERT_ROWS

LOP_MODIFY_ROW

LOP_DELETE_ROWS

LOP_BEGIN_XACT

Recovery Models
SQL Server backup and restore operations occur within the context of the recovery model of the database. Recovery models are designed to control transaction log maintenance. A recovery model is a database property that controls how transactions are logged, whether the transaction log requires (and allows) backing up, and what kinds of restore operations are available.
Three recovery models exist:
- Simple --- Operations that require transaction log backups are not supported by the simple recovery model.
- Full, and
- Bulk-logged.
Typically, a database uses the full recovery model or simple recovery model. A database can be switched to another recovery model at any time. By default, when a new database is created within Microsoft SQL, the recovery model option is set to full.
Recovery Option
Restoring the db with the RECOVERY option is the default option for users with FULL backup. However, if you have different types of backups (differential, transactional, etc.), you may need to use the NORECOVERY option to combine the backups.
Even Recover database without Restore
- RESTORE DATABASE *database_name* WITH RECOVERY
References:
- fn_dblog()
- Inside the Transaction Log file using fn_dblog() and fn_full_dblog() (coeo.com)
- SQL Server fn_dblog() Function Details and Example (logicalread.com)
- Recover to a Log Sequence Number (SQL Server) - SQL Server | Microsoft Learn
- This topic is relevant only for databases that are using the full or bulk-logged recovery models.
- View SQL Transaction Log with Fn_dblog and SQL Log Analyzer (sqlmvp.org)
- Recovery Modle
- Set database recovery model - SQL Server | Microsoft Learn
- Recovery Models (SQL Server) - SQL Server | Microsoft Learn
- How to change the default Recovery Model Option for new SQL Databases (javelin-tech.com)
- Recover database - no restore (Transact-SQL) - SQL Server | Microsoft Learn
- RESTORE DATABASE *database_name* WITH RECOVERY
- MS SQL Server Restore with RECOVERY and NORECOVERY (stellarinfo.com)
- Restoring the db with the RECOVERY option is the default option for users with FULL backup. However, if you have different types of backups (differential, transactional, etc.), you may need to use the NORECOVERY option to combine the backups.
- Difference Between Restore with Recovery & Restore with Norecovery – SQLServerCentral
- Restore and recovery overview (SQL Server) - SQL Server | Microsoft Learn

Join the conversation! Your thoughts help the community grow.