Bạn sẽ cần Sao lưu toàn bộ trước đó và mọi bản sao lưu nhật ký được thực hiện kể từ lần sao lưu Toàn bộ cuối cùng
1) Đuôi một bản sao lưu nhật ký
BACKUP LOG OldDB TO DISK='C:\OldDB_Tail.trn' WITH NO_TRUNCATE
2) Tìm giao dịch cho các bản ghi đã xóa (Hoạt động sẽ là LOP_DELETE_lawS cho DELETE và LOP_SET_BITS & LOP_MODIFY_law cho BẢNG TRUNCATE)
SELECT * FROM fn_dblog(NULL,NULL) WHERE AllocUnitName = 'dbo.YourTableName'
3) Khôi phục Sao lưu đầy đủ trước đó và đăng nhập các bản sao lưu cộng với đuôi vào cơ sở dữ liệu mới VỚI BÌNH THƯỜNG và STOPAT = 'Ngay trước khi bắt đầu giao dịch'
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
Bài đăng trên blog này bao gồm chi tiết hơn về việc tìm thời gian để DỪNG bằng cách sử dụng fn_dblog. Bài đăng trên blog này có thể phục hồi dữ liệu trực tiếp từ nhật ký nhưng điều này có thể rất tốn thời gian so với thời điểm phục hồi.
Ngoài ra bài đăng trên blog này của Robert L Davis có một ví dụ về việc kết hợp STOP và STANDBY để cho phép bạn truy vấn trạng thái của cơ sở dữ liệu tại các thời điểm khác nhau.