RESTORE WITH NORECOVERY which leaves the database non-operational, and does not roll back the uncommitted transactions. Additional transaction logs can be restored. The database cannot be used until it is recovered.
Examples (Transact-SQL)
A. Restoring a differential database backup
This example restores a database and differential database backup of the MyAdvWorks
database.
-- Assume the database is lost, and restore full database,
-- specifying the original full database backup and NORECOVERY,
-- which allows subsequent restore operations to proceed.
RESTORE DATABASE MyAdvWorks
FROM MyAdvWorks_1
WITH NORECOVERY;
GO
-- Now restore the differential database backup, the second backup on
-- the MyAdvWorks_1 backup device.
RESTORE DATABASE MyAdvWorks
FROM MyAdvWorks_1
WITH FILE = 2,
RECOVERY;
GO
B. Restoring a database, differential database, and transaction log backup
This example restores a database, differential database, and transaction log backup of the MyAdvWorks
database.
-- Assume the database is lost at this point. Now restore the full
-- database. Specify the original full database backup and NORECOVERY.
-- NORECOVERY allows subsequent restore operations to proceed.
RESTORE DATABASE MyAdvWorks
FROM MyAdvWorks_1
WITH NORECOVERY;
GO
-- Now restore the differential database backup, the second backup on
-- the MyAdvWorks_1 backup device.
RESTORE DATABASE MyAdvWorks
FROM MyAdvWorks_1
WITH FILE = 2,
NORECOVERY;
GO
-- Now restore each transaction log backup created after
-- the differential database backup.
RESTORE LOG MyAdvWorks
FROM MyAdvWorks_log1
WITH NORECOVERY;
GO
RESTORE LOG MyAdvWorks
FROM MyAdvWorks_log2
WITH RECOVERY;
GO
Example
-- View the data and log files in the backup files
RESTORE FILELISTONLY
FROM DISK = 'D:\SQLServerBackups\TestRestoreBackup\TestRestoreDB_Full_01.bak',
DISK = 'D:\SQLServerBackups\TestRestoreBackup\TestRestoreDB_Full_02.bak',
DISK = 'D:\SQLServerBackups\TestRestoreBackup\TestRestoreDB_Full_03.bak',
DISK = 'D:\SQLServerBackups\TestRestoreBackup\TestRestoreDB_Full_04.bak'
---
USE master
GO
---------------
-- FULL
/*
RESTORE DATABASE TestRestoreDB
FROM DISK = 'D:\SQLServerBackups\TestRestoreBackup\TestRestoreDB_Full_01.bak',
DISK = 'D:\SQLServerBackups\TestRestoreBackup\TestRestoreDB_Full_02.bak',
DISK = 'D:\SQLServerBackups\TestRestoreBackup\TestRestoreDB_Full_03.bak',
DISK = 'D:\SQLServerBackups\TestRestoreBackup\TestRestoreDB_Full_04.bak'
WITH REPLACE, maxtransfersize = 4194302, buffercount = 96, stats = 5
GO
*/
---------------
-- FULL + DIFF
-- FULL (NORECOVERY)
RESTORE DATABASE TestRestoreDB
FROM DISK = 'D:\SQLServerBackups\TestRestoreBackup\TestRestoreDB_Full_01.bak',
DISK = 'D:\SQLServerBackups\TestRestoreBackup\TestRestoreDB_Full_02.bak',
DISK = 'D:\SQLServerBackups\TestRestoreBackup\TestRestoreDB_Full_03.bak',
DISK = 'D:\SQLServerBackups\TestRestoreBackup\TestRestoreDB_Full_04.bak'
WITH NORECOVERY, maxtransfersize = 4194302, buffercount = 96, stats = 5
GO
-- DIFF (RECOVERY)
RESTORE DATABASE TestRestoreDB
FROM DISK = 'D:\SQLServerBackups\TestRestoreBackup\TestRestoreDB_Diff_01.bak',
DISK = 'D:\SQLServerBackups\TestRestoreBackup\TestRestoreDB_Diff_02.bak',
DISK = 'D:\SQLServerBackups\TestRestoreBackup\TestRestoreDB_Diff_03.bak',
DISK = 'D:\SQLServerBackups\TestRestoreBackup\TestRestoreDB_Diff_04.bak'
WITH RECOVERY, maxtransfersize = 4194302, buffercount = 96, stats = 5
GO
---------------
-- FULL + DIFF + LOG
-- FULL (NORECOVERY)
RESTORE DATABASE TestRestoreDB
FROM DISK = 'D:\SQLServerBackups\TestRestoreBackup\TestRestoreDB_Full_01.bak',
DISK = 'D:\SQLServerBackups\TestRestoreBackup\TestRestoreDB_Full_02.bak',
DISK = 'D:\SQLServerBackups\TestRestoreBackup\TestRestoreDB_Full_03.bak',
DISK = 'D:\SQLServerBackups\TestRestoreBackup\TestRestoreDB_Full_04.bak'
WITH NORECOVERY, maxtransfersize = 4194302, buffercount = 96, stats = 5
GO
-- DIFF (NORECOVERY)
RESTORE DATABASE TestRestoreDB
FROM DISK = 'D:\SQLServerBackups\TestRestoreBackup\TestRestoreDB_Diff_01.bak',
DISK = 'D:\SQLServerBackups\TestRestoreBackup\TestRestoreDB_Diff_02.bak',
DISK = 'D:\SQLServerBackups\TestRestoreBackup\TestRestoreDB_Diff_03.bak',
DISK = 'D:\SQLServerBackups\TestRestoreBackup\TestRestoreDB_Diff_04.bak'
WITH NORECOVERY, maxtransfersize = 4194302, buffercount = 96, stats = 5
GO
-- LOG 1 (NORECOVERY)
RESTORE LOG TestRestoreDB
FROM DISK = 'D:\SQLServerBackups\TestRestoreBackup\TestRestoreDB_Log_01.trn'
WITH NORECOVERY, maxtransfersize = 4194302, buffercount = 96, stats = 5
GO
-- LOG 2 (RECOVERY)
RESTORE LOG TestRestoreDB
FROM DISK = 'D:\SQLServerBackups\TestRestoreBackup\TestRestoreDB_Log_02.trn'
WITH RECOVERY, maxtransfersize = 4194302, buffercount = 96, stats = 5
GO
---------------
USE TestRestoreDB
GO
SELECT * FROM dbo.tbTest
/*
Col01 Col02
1 One
2 Two
3 Three
4 Full Backup Completed
5 Five
6 Six
7 Diff Backup Completed
8 Eight
9 Nine
10 Log 1 Backup Completed
11 Eleven
12 Tweleve
13 Log 2 Backup Completed
14 Fourteen
15 Fifteen
*/
Comments