完整备份 Full Backup
提供数据库的完整副本,但仅允许将数据库还原到进行备份时的时间点
差异备份 Differential Backup
差异备份仅包含自上次完整备份(事务日志的活动部分)以来已更改的数据。差异备份是累积备份,而不是增量备份。这意味着差异备份包含自上次完整备份以来所做的所有更改,如下图,差异备份6pm包含自完整备份10am以来的全部更改,尽管差异备份2pm已经包含了部分更新!
事务日志备份 Transaction Log Backup
事务日志备份包含在上次事务日志备份或第一次完全备份与备最后一个日志记录之间创建的所有事务日志记录。事务日志备份允许将数据库还原到故障发生之前的特定时间点。它是增量的,与差异备份不同(累积),这意味着为了将数据库还原到某个时间点,所有事务日志记录都需要重播到该特定时间点的数据库更改!请注意,事务日志备份仅适用于完整或大容量日志恢复模式
综合应用(完整恢复模式Full Recovery)
在上述场景中,故障发生在 19:00,这意味着在 18:59 到 21:00 期间所做的更改将丢失。在这些情况下,最好的方法是还原完整备份 (10:00),然后还原差异备份 (16:00) 加上事务日志备份(18:00 和 20:00)。在 20:00 进行的事务日志备份允许回滚到 18:59。
以下是将此数据库还原到 18:59:59 的命令序列:
RESTORE DATABASE your_database FROM DISK = 'full_10_00.bak' WITH NORECOVERY, REPLACE RESTORE DATABASE your_database FROM DISK = 'diff_16_00.bak' WITH NORECOVERY RESTORE LOG your_database FROM DISK = 'log_18_00.bak' WITH NORECOVERY RESTORE LOG your_database FROM DISK = 'log_20_00.bak' WITH STOPAT = '2015-11-19 18:59:59.000', RECOVERY