Navicat for SQL Server GUI不支持真正的事务日志备份(BACKUP LOG),其“事务记录备份”选项实为带日志标志的完整备份;正确做法是通过查询窗口手动执行BACKUP LOG T-SQL语句,并确保恢复模式为FULL/BULK_LOGGED且已有完整备份。

Navicat for SQL Server 不支持直接创建「仅事务日志」的备份;它只能执行完整备份、差异备份,或通过 T-SQL 手动触发 BACKUP LOG —— 但该操作不在 GUI 备份向导中提供。
为什么 Navicat 的备份界面里找不到“事务日志备份”选项
Navicat for SQL Server 的图形化备份功能(右键数据库 → Backup Database)底层调用的是 SQL Server 的 BACKUP DATABASE 命令,而非 BACKUP LOG。其“备份类型”下拉菜单中只有「完整」、「差异」、「事务记录备份」三个选项,但注意:事务记录备份 这个标签名具有误导性——它实际对应的是「备份整个数据库 + 包含事务日志的完整备份」,并非标准意义上的 BACKUP LOG(即只备份日志尾部、不截断、用于日志链维护的场景)。
真正意义上的事务日志备份必须满足两个前提:
- 数据库恢复模式为
FULL或BULK_LOGGED(简单模式下无法做日志备份) - 已有至少一次完整备份(日志备份依赖于完整备份作为起点)
- 需手动执行
BACKUP LOG [db_name] TO DISK = '...' WITH NO_TRUNCATE等语句
如何在 Navicat 中正确执行事务日志备份(绕过 GUI 限制)
你得放弃“备份向导”,改用查询窗口执行原生 T-SQL:
- 连接目标 SQL Server 实例后,点击顶部菜单「查询」→「新建查询」
- 输入类似以下语句(注意替换
[YourDB]和路径):BACKUP LOG [YourDB] TO DISK = 'D:\backup\YourDB_log_20260907.trn' WITH INIT, FORMAT, CHECKSUM;
- 执行前务必确认:
[YourDB]恢复模式不是SIMPLE(可在对象浏览器右键库 →「属性」→「选项」页查看) - 路径必须是 SQL Server 服务账户有写入权限的位置(本地磁盘优先;网络路径需 SQL Server 启用
xp_cmdshell并映射成功) - 若需定期执行,把这段 SQL 保存为查询文件,再通过「自动运行」→「新建批处理作业」绑定计划任务
勾选“事务记录备份”时实际发生了什么
当你在 Navicat 备份弹窗中勾选 事务记录备份,它做的其实是:
- 生成一条
BACKUP DATABASE ... WITH NORECOVERY或类似带日志相关标志的完整备份命令(具体取决于其他选项组合) - 该操作仍会备份全部数据页,并非只备份日志文件(.ldf)内容
- 它不会截断日志,但也不等价于 DBA 日常维护所指的“日志备份”(log backup)
- 如果你真正想做的是维护日志链、为还原到时间点(PITR)做准备,请忽略这个选项,坚持手写
BACKUP LOG
容易被忽略的关键细节
事务日志备份不是“点一下就完事”的操作,它和恢复模式、备份链、SQL Server 服务权限强绑定:
- 即使你用 Navicat 成功执行了
BACKUP LOG查询,如果之前没做过完整备份,这次日志备份也无法用于后续的时间点还原 -
WITH INIT会覆盖同名文件,但若目标路径已存在正在使用的 .trn 文件(比如被另一个进程锁定),备份会静默失败 —— 建议加CHECKSUM和STATS = 10观察进度 - SQL Server 默认禁用
xp_cmdshell,而某些跨网络路径或自动清理逻辑(如先DEL再备份)依赖它;启用前需评估安全风险 - Navicat 自动备份任务里无法设置“仅当日志超过 50MB 时才触发”,这类条件判断必须靠 SQL Agent 或 Windows Task Scheduler 配合脚本实现


















