

























在 SQL Server 中,BACKUP DATABASE 命令是用于创建数据库备份的核心工具,是数据保护和灾难恢复最关键的手段。
下面我会从最基础的完整备份讲起,逐步涵盖差异备份、事务日志备份,以及一些重要的实践建议。
完整备份会备份整个数据库的所有数据,是其他所有备份类型的基础。
| BACKUP DATABASE [你的数据库名] | |
| TO DISK = 'D:\Backups\你的数据库名_Full_YYYYMMDD.bak' | |
| WITH INIT, -- 覆盖现有备份文件,而非追加 | |
| COMPRESSION, -- 压缩备份,节省空间,建议始终使用 | |
| STATS = 5; -- 每完成5%显示一个进度信息 |
差异备份只备份自上一次完整备份以来所有发生变化的数据。它比完整备份快得多,并且可以大大减少恢复数据时需要应用的事务日志数量。
| -- 前提:必须先存在一个完整备份 | |
| BACKUP DATABASE [你的数据库名] | |
| TO DISK = 'D:\Backups\你的数据库名_Diff_YYYYMMDD.bak' | |
| WITH DIFFERENTIAL, -- 指定进行差异备份 | |
| COMPRESSION, | |
| STATS = 5; |
事务日志备份备份的是自上一次事务日志备份(如果没有,则从上一次完整或差异备份)之后发生的所有事务记录。它允许你执行时间点恢复(例如恢复到某个误操作发生前的5分钟)。
| -- 前提:数据库恢复模式必须是“完整”或“大容量日志” | |
| BACKUP LOG [你的数据库名] | |
| TO DISK = 'E:\LogBackups\你的数据库名_Log_YYYYMMDD_HHMMSS.trn' | |
| WITH COMPRESSION, STATS = 5; |
重要提示:如果数据库的恢复模式是“简单”,则不能使用
BACKUP LOG命令。
你选择的恢复模式直接决定了你能做哪些类型的备份,以及如何进行恢复。
| 恢复模式 | 支持的操作 | 数据安全 | 日志空间管理 | 适用场景 |
|---|---|---|---|---|
| 完整 | 完整、差异、日志 | 最高:可恢复到任意时间点 | 需要定期备份日志,否则日志文件会持续增长,直至空间写满 | 生产环境、重要业务系统 |
| 大容量日志 | 完整、差异、日志 | 较高:无法恢复到特定时间点,只能恢复到日志备份结尾 | 批量操作(如 SELECT INTO)日志较小,性能好。日志备份后日志空间不会自动收缩 |
数据仓库,或批量操作频繁的数据库 |
| 简单 | 完整、差异 | 最低:只能恢复到完整/差异备份结尾 | 自动管理:每次检查点后自动截断日志,日志文件很小 | 开发、测试、只读或可重建的系统 |
对于生产数据库,建议的备份策略如下:
这样配置的好处是,一旦发生灾难,你最多只会丢失 15-30 分钟的数据,并且恢复速度相对较快(先还原完整备份,接着还原最新的差异备份,最后依次还原差异备份之后的所有日志备份)。
RESTORE VERIFYONLY 命令检查备份文件的完整性,或直接在测试环境进行一次完整的恢复演练。BACKUP DATABASE ... WITH ENCRYPTION 对备份文件进行加密,防止备份文件被盗后数据泄露。查看备份历史
| -- 查看特定数据库的所有备份记录 | |
| SELECT * FROM msdb.dbo.backupset | |
| WHERE database_name = '你的数据库名' | |
| ORDER BY backup_finish_date DESC; |
验证备份文件是否有效
| RESTORE VERIFYONLY FROM DISK = 'D:\Backups\你的数据库名_Full_20250101.bak'; |
查看备份文件内容
| -- 查看备份文件里包含了哪些备份集 | |
| RESTORE HEADERONLY FROM DISK = 'D:\Backups\你的数据库名_Full_20250101.bak'; |
如果你需要了解如何还原这些备份文件,可以告诉我,我可以为你详细解释 RESTORE DATABASE 的命令和步骤。
=======================================================================================
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。