How to Restore Database from LDF File in SQL Server 2008 Within Few Clicks
If for any reason, people lost their SQL database files. Then, no need to worry about this. It is still possible to recover tables data. For this, the SQL Server Transaction Log or LDF file is required.
What is LDF File?
LDF is a file extension used for server log transaction in Microsoft SQL Server. This file contains information about all the transactions occurred in a Relational Database Management System (RDBMS). Originally, a log or transaction is an action executed in a database, which are used to track events so that they can be recovered from catastrophic situations.
The Log file contain a history of activities committed in the database. In such a situation, when the user is not capable to access the database, then restore the database from LDF file in SQL Server.
After understand about the SQL LDF file, know – how Microsoft SQL Server stores data in LDF file.
How MS SQL Server Store Records in Transaction Log (.ldf) File?
As we already know about LDF file created by SQL server. Every record in a database is first stored in Transaction Log file. In LDF, an LSN (Log Sequence Number) is assigned to every record. The LSN of a log record at which a significant event occurred can be useful for constructing correct restore sequences and they store enough information to restore database from LDF file in SQL Server to a specific point in time, to replay or undo a change.
To get an instant & safe solution to recover SQL database without using management studio, go through this ultimate guide – How to Recover Data from Log File in SQL Server
Problems faced while accessing SQL Server files
There are several unknown cases, which create trouble in accessing SQL Server files. Few of them are mentioned below:
1. The memory disk system may get affected due to several reasons which may affect the arrangement of table details in the database. Ultimately, you will not be able to access the data. In this case, restoring SQL Server databases from LDF files will be the most effective solution to get back the table data.
2. Anti-malware and anti-spyware are good for other files stored on the system, but they can be harmful to the database. That is why it is advised to exclude database from anti-virus scans.
3.The database are not meant to be compressed. It can increases the chance of corruption and you will not be able to access the data. And, user need to restore database from LDF file of SQL Server 2008 / 2012 / 2014 / 2016 / 2017.
4. The Power failure is the most common cause of data corruption. Suppose a person is inserting some data into the database and suddenly power cut off, then the address of the next record is likely to be lost, which ends up in a corruption. Then log file can be used to restore database.
Technique to Restore SQL Server Databases from LDF Files
Restoring deleted SQL Server data with the help of Log Sequence Number (LSN) will recover data from LDF file SQL Server. The following method will provide you the effective solution to recover database using transaction log file.
Note: In this article, we are considering only “DELETE” statement.
- First of all, we need SQL ServerTransaction Log to restore database from LDF file by using LSN. SQL Server Transaction Log will provide information about the deleted rows. For this, we need to run fn_dblog() function that will provide the information about the transactions.
- The fn_dblog() function (formerly DBCC command) is an undocumented function in SQL Server, it allows you to view the transaction log records in the active part of the transaction log file for the current database.
Note:- Use of the fn_dblog() function against a production database instance is executed at your own risk.
Run the code to get all the transaction of deleted rows.
The basic fn_dblog() will return all the transaction logs.
SELECT * FROM fn_dblog(NULL, NULL)
For more specific result, Run the fn_dblog()
USE Databsename;
GO
select [Current LSN],
[Operation],
[Transaction Name],
[Transaction ID],
[Transaction SID],
[SPID],
[Begin Time]
FROM fn_dblog(null,null)
- Now, we can see the deleted transactions under Transaction ID column which we will use in the below statement to get the LSN of the LOP_BEGIN_XACT operation. That means we need the exact LSN when the DELETE statement began its transaction.
Here, we can see the LSN of a delete statement.
We will be using the STOPBEFOREMARK operation to recover our data.
Now run a transaction log backup on the database where the data was deleted if a transaction log backup has not run since the data deletion.
Next, we will restore this database here else or on the same server with the different name until the above mentioned LSN and then we will import the deleted data from newly restored database to your production database.
RESTORE LOG databasename_COPY
FROM
DISK = N’C:\databasename_tlogbackup_15thJan610.trn’
WITH
STOPBEFOREMARK = ‘lsn:22000000042100001’
Now your database is restored and you can check whether your deleted data is recovered or not. Run the below SELECT statement to see the first ten rows of the location table which was deleted.
USE databasename_COPY
GO
SELECT * from Location
Now, you can see all the deleted rows restored and use this deleted data as per your requirement. If you want to export this data to your live database you can use the SQL Server Integration Services.
Conclusion
The above-mentioned method for restoring database from LDF file in SQL Server is tedious and can be done if you have a great knowledge of Microsoft SQL Server. So, it is better to use automated tool SQL Log Analyzer which is easy to use and affordable and allow the user to recover database from LDF file without the assistance of SQL Server.