完整、差异、事务日志三种备份是什么
解释 SQL Server 三种备份类型的机制差别:完整备份、差异备份、事务日志备份各记录什么、耗时多长、恢复时怎么组合使用。
结论先行
三种备份回答三个不同的问题:完整备份=整个数据库当前状态;差异备份=自上次完整备份以来变动的部分;事务日志备份=自上次日志备份以来所有事务记录。生产库的标准组合是「完整打底 + 差异缩小 + 日志兜底」,三者按时间线串联即可回滚到任意时间点。
三种备份对照
| 类型 | 内容 | 耗时/体积 | 频率参考 | 能否单独还原 |
|---|---|---|---|---|
| 完整备份 | 整个库数据 + 日志 | 最大 | 每天/每周 | 可 |
| 差异备份 | 上次完整后修改的数据页 | 中 | 每 4–6 小时 | 需配最近一次完整 |
| 事务日志备份 | 上次日志备份后的日志记录 | 最小 | 每 15 分钟–1 小时 | 需完整 + 差异 + 日志链 |
差异备份依赖「上次完整备份」,不依赖上次差异——差异不是叠加的,每个差异文件都相对最近一次完整备份。
示例脚本(配 SSMS 或查询窗口执行)
-- 完整备份
BACKUP DATABASE Sales TO DISK = N'E:\backup\sales_full.bak';
-- 差异备份
BACKUP DATABASE Sales WITH DIFFERENTIAL TO DISK = N'E:\backup\sales_diff.bak';
-- 事务日志备份(要求 FULL 或大容量日志恢复模型)
BACKUP LOG Sales TO DISK = N'E:\backup\sales_log.trn';
简单恢复模型下不能做事务日志备份,日志会在检查点自动截断,只能回到最近一次完整/差异备份。恢复模型与备份策略的关系见「恢复模型」相关条目。
恢复时的组合顺序
- 还原最近的完整备份(
WITH NORECOVERY保持待恢复状态); - 叠加该完整之后的差异备份(有则用最近一份);
- 逐段叠加日志备份直到目标时间点;
- 最后一步
WITH RECOVERY收尾。
这三类备份在 SQL Server 2025 Developer、SQL Server 2022 Developer 引擎上行为一致,通过 SSMS 管理工具条目 的右键菜单「任务 → 备份」也能完成同样操作。