Search This Blog

Three SQL Server recovery models: simple, full, bulk-logged recovery model

There are three different recovery models of SQL Server, you should select SQL Server recovery model to manage log files and prepare for the SQL recovery in case of disaster. This document is to talk about three SQL Server recovery models: simple, full and bulk-logged. First you should backup your SQL Server database.

Basic information about log files

SQL Server database contains at least a mdf data file and a ldf log file. Mdf file contains all the database objects and data, such as table, stored procedure and user information. Ldf log file contains all logs in database. While, you never only count on log files to recover your database, for example, to recover database to some time-point through ldf log file and the previous full backup.
What does log file do?
  • Being physical store position of logs, we can backup the logs from ldf log file, and recover database using log backup file.
  • SQL Server will read the log from ldf log file every time it launches. It will roll backup affairs not submitted before and roll forward those affairs which have been submitted but not have been wrote data file to ensure the integrity of affairs.
  • A full backup contains all data of database, but not including all logs. Full backup only contains all data pages and logs in the tail of current database.
Activity log means log records of current running affairs. Virtual log means logic storage unit of log. SQL Server logically divides ldf log file space into several pieces. Every piece is a virtual log. Log truncation means to delete former log.

Simple Recovery Model

When you choose simple recovery model, SQL Server maintains only a minimal amount of information in the transaction log. SQL Server truncates the transaction log each time the database reaches a transaction checkpoint, leaving no log entries for disaster recovery purposes.
In databases using the simple recovery model, you may restore full or differential backups only. It is not possible to restore such a database to a given point in time, you may only restore it to the exact time when a full or differential backup occurred. Therefore, you will automatically lose any data modifications made between the time of the most recent full/differential backup and the time of the failure.
Simple Recovery requires the least administration. It is easier to manage than the Full or Bulk-Logged models, but at the expense of higher data loss exposure if a data file is damaged. Simple Recovery is not an appropriate choice for production systems where loss of recent changes is unacceptable. When using Simple Recovery, the backup interval should be long enough to keep the backup overhead from affecting production work, yet short enough to prevent the loss of significant amounts of data.
Advantage: permits high-performance bulk copy operations. Reclaims log space to keep space requirements small.
Disadvantage: changes since the most recent database or differential backup must be redone.

How to set the simple recovery model using T-SQL.
ALTER DATABASE dbName SET RECOVERY recoveryOption
GO
Example: change AdventureWorks database to "Simple" recovery model
ALTER DATABASE AdventureWorks SET RECOVERY SIMPLE
GO
How to set using SQL Server Management Studio
  • Right click on database name and select Properties
  • Go to the Options page
  • Under Recovery model select "Simple"
  • Click "OK" to save

Full Recovery Model

With full recovery model, SQL Server preserves the transaction log until you back it up. This allows you to design a disaster recovery plan that includes a combination of full and differential database backups in conjunction with transaction log backups.
You have the most flexibility restoring databases using the full recovery model when a database failure happens. In addition to preserving data modifications stored in the transaction log, the full recovery model allows you to restore a database to a specific point in time.
Advantage: no work is lost due to a lost or damaged data file. It can recover to an arbitrary point in time.
Disadvantage: if the log is damaged, changes since the most recent log backup must be redone.

How to set the full recovery model using T-SQL.
ALTER DATABASE dbName SET RECOVERY recoveryOption
GO
Example: change AdventureWorks database to "Full" recovery model
ALTER DATABASE AdventureWorks SET RECOVERY FULL
GO
How to set using SQL Server Management Studio
  • Right click on database name and select Properties
  • Go to the Options page
  • Under Recovery model select "Full"
  • Click "OK" to save

Bulk-logged Recovery Model

The bulk-logged recovery model is a special-purpose model that works in a similar manner to the full recovery model. The only difference is in the way it handles bulk data modification operations. The bulk-logged model records these operations in the transaction log using a technical known as minimal logging. This saves significantly on processing time, but prevents you from using the point-in-time restore option.

Advantage: permits high-performance bulk copy operations, minimal log space is used by bulk operations.
Disadvantage: if the log is damaged, or bulk operations occurred since the most recent log backup, changes since that last backup must be redone.

How to set the bulk-logged recovery model using T-SQL.
ALTER DATABASE dbName SET RECOVERY recoveryOption
GO
Example: change AdventureWorks database to "Bulk-logged" recovery model
ALTER DATABASE AdventureWorks SET RECOVERY BULK_LOGGED
GO
How to set using SQL Server Management Studio
  • Right click on database name and select Properties
  • Go to the Options page
  • Under Recovery model select "Bulk-logged"
  • Click "OK" to save
Full Recovery and Bulk-Logged Recovery models provide the greatest protection for data. These models rely on the transaction log to provide full recoverability and to prevent work loss in the broadest range of failure scenarios. The Bulk-Logged model provides higher performance and lower log space consumption for certain large-scale operations.