Create Backups without Breaking the Database Backup Sequence

/*  Full Backup @ 12 AM */
BACKUP DATABASE AdventureWorksDW2008
TO DISK=’C:DatabaseBackupsAdventureWorksDW2008_Full.BAK’
WITH COMPRESSION

/*  Transactional Log Backup @ 3 AM */
BACKUP LOG AdventureWorksDW2008
TO DISK=’C:DatabaseBackupsAdventureWorksDW2008_Log1.TRN’
WITH COMPRESSION

/*  Differnetial Backup @ 6 AM */
BACKUP DATABASE AdventureWorksDW2008
TO DISK=’C:DatabaseBackupsAdventureWorksDW2008_Diif1.BAK’ 
WITH DIFFERENTIAL, COMPRESSION

/*  Transactional Log Backup @ 9 AM */
BACKUP LOG AdventureWorksDW2008
TO DISK=’C:DatabaseBackupsAdventureWorksDW2008_Log2.TRN’
WITH COMPRESSION

/*  Request For Special Full Backup @ 11 AM */
BACKUP DATABASE AdventureWorksDW2008
TO DISK=’C:DatabaseBackupsAdventureWorksDW2008_Special.BAK’
WITH COMPRESSION

/*  Differnetial Backup @ 12 PM */
BACKUP DATABASE AdventureWorksDW2008
TO DISK=’C:DatabaseBackupsAdventureWorksDW2008_Diif2.BAK’ 
WITH DIFFERENTIAL, COMPRESSION

/*  Transactional Log Backup @ 3 PM */
BACKUP LOG AdventureWorksDW2008
TO DISK=’C:DatabaseBackupsAdventureWorksDW2008_Log3.TRN’
WITH COMPRESSION

/*  Disaster @ 4 PM */
/*  Tail  Log Backup */
BACKUP LOG AdventureWorksDW2008
TO  DISK = N’C:DatabaseBackupsAdventureWorksDW2008_TAIL_LOG.TRN’
WITH NO_TRUNCATE, COMPRESSION
GO

As there was a disaster at 4 PM you need to recover the AdventureWorksDW2008 database. The database can be restored using the below mentioned TSQL code which uses the initial database full backup which was taken at 12 AM.

/*   Restore Initial Full Backup of AdventureWorksDW2008 Database  */
RESTORE DATABASE AdventureWorksDW2008
FROM DISK =’C:DatabaseBackupsAdventureWorksDW2008_Full.BAK’ WITH NORECOVERY

/*  Restore Latest Differential Backup of AdventureWorksDW2008 Database  */
RESTORE DATABASE AdventureWorksDW2008
FROM DISK =’C:DatabaseBackupsAdventureWorksDW2008_Diif2.BAK’ WITH NORECOVERY

/*  Restore Transaction Log Backup In Sequence After The Last Differential Backup of AdventureWorksDW2008 Database  */
RESTORE DATABASE AdventureWorksDW2008
FROM DISK =’C:DatabaseBackupsAdventureWorksDW2008_Log3.TRN’ WITH NORECOVERY

/* Restore the Transactional Tail Log Backup To Recovery The Database  */
RESTORE DATABASE AdventureWorksDW2008
FROM DISK =’C:DatabaseBackupsAdventureWorksDW2008_TAIL_LOG.TRN’ WITH RECOVERY

You will see that when the above script was executed the database restoration failed after restoring the initial full backup and the database was left in Restoring…. state as shown in the below snippet. The database restoration script basically fails while restoring the AdventureWorksDW2008_Diif2.BAK backup file with the below mentioned error message.

Msg 3136, Level 16, State 1, Line 2
This differential backup cannot be restored because the database has not been restored to the correct earlier state.
Msg 3013, Level 16, State 1, Line 2
RESTORE DATABASE is terminating abnormally.

Continues…

Leave a comment

Your email address will not be published.