Anda akan memerlukan Full Backup sebelumnya dan semua backup log diambil sejak Full backup terakhir
1) Ambil ekor cadangan log
BACKUP LOG OldDB TO DISK='C:\OldDB_Tail.trn' WITH NO_TRUNCATE
2) Temukan Transaksi untuk Catatan yang Dihapus (Pengoperasian akan menjadi LOP_DELETE_ROWS untuk DELETEs dan LOP_SET_BITS & LOP_MODIFY_ROW untuk Tabel TRUNCATE)
SELECT * FROM fn_dblog(NULL,NULL) WHERE AllocUnitName = 'dbo.YourTableName'
3) Kembalikan Kembali Penuh Sebelumnya dan log cadangan ditambah ekor ke database baru DENGAN NORECOVERY dan STOPAT = 'Sebelum Memulai Waktu untuk Transaksi'
RESTORE DATABASE NewDB
FROM DISK='C:\Previous_Full_Backup_Of_OldDB.bak'
WITH NORECOVERY,
STOPAT='2012/01/11 11:35AM',
MOVE 'OldDB' TO 'C:\DATABASES\NewDB.mdf',
MOVE 'OldDB_Log' TO 'C:\DATABASES\NewDB.ldf'
RESTORE LOG NewDB
FROM DISK='C:\Previous_TranLog_Backup_Of_OldDB.trn'
WITH NORECOVERY,
STOPAT='2012/01/11 11:35AM'
RESTORE LOG NewDB
FROM DISK='C:\OldDB_Tail.trn'
WITH NORECOVERY,
STOPAT='2012/01/11 11:35AM'
-- This recovers the restored database and allows access
RESTORE DATABASE NewDB WITH RECOVERY
Posting blog ini mencakup lebih detail menemukan waktu untuk STOPAT menggunakan fn_dblog. Posting blog ini bertujuan memulihkan data langsung dari log tetapi ini mungkin sangat memakan waktu dibandingkan dengan titik pemulihan waktu.
Juga posting blog ini oleh Robert L Davis memiliki contoh tentang menggabungkan STOP dan STANDBY untuk memungkinkan Anda untuk menanyakan keadaan basis data pada berbagai titik waktu.