Today we will understand SQL Server fast recovery. To start with, there are number of cases before SQL Server 2005 wherein databases aren’t accessible because length of recovery time on startup, as a result you may need to compromise on application availability impacting large user base etc.
We know that database recovery is having three phases as following;
Out of the above listed, last one i.e. Undo phase takes more time to complete and as a result you cannot access the database until this phase completes. SQL Server 2005 took a step forward by making database available during Undo phase of recovery process.
Question is how is this achieved? Ok, SQL Engine during Redo phase acquires lock and holds these locks for any uncommitted transaction, so when Undo phase begins recovery is in effect as if any application/ user running transactions to undo some changes that’s needs a rollback. Locks are acquired perform this operation as such transaction consistency is maintained appropriately. Benefit of the above discussed process is that users are still able to access the database and run transactions but they may be blocked by system sessions that is running recovery.
This feature is available for enterprise edition and only applicable for crash recovery. Last but not the least most importantly this works for only those databases that are in FULL recovery model.