Navicat 17 每日凌晨定时备份本质是批处理作业与Windows任务计划程序组合执行,非Navicat自身服务;需严格配置绝对路径、保存密码、时间变量$(Date:yyyyMMdd_HHmmss),否则静默失败。

Navicat 17 的每日凌晨定时备份,本质是“批处理作业 + Windows 任务计划程序”组合执行,不是 Navicat 自身在后台跑服务。没配对路径、密码、时间变量这三项,任务必然静默失败——连日志都不留。
为什么 --batch-job 命令行调用总不生成备份文件
根本原因:Navicat 是 GUI 应用,没有常驻进程,命令行只是“唤起一次、做完就退”。常见静默失败点:
-
navicat.exe启动时工作目录不可控,若备份路径用了相对路径(如./backup/),实际写入位置可能是安装目录或系统临时目录 - Windows 任务计划中未勾选“只在用户登录时运行”,导致 Excel/PDF 渲染引擎、SMTP 认证模块加载失败(报错码常为
0xc000007b或空邮件) - 连接密码未在 Navicat 连接配置里勾选“保存密码”,命令行模式下会卡认证,不报错也不继续
- 任务计划的安全选项里没填当前 Windows 账户**完整密码**(空密码、PIN 码、微软账户的 App 密码均无效)
必须手动设置 $(Date:yyyyMMdd_HHmmss) 时间变量
Navicat 默认备份文件名是静态的(如 mydb.sql),第二天直接覆盖前一天,等于没备。解决办法只有在批处理作业编辑界面改文件名:
- 新建批处理作业 → 拖入“Backup mydb” → 双击该任务 → 点“编辑”
- 在“文件名”输入框里,把
mydb.sql改成mydb_$(Date:yyyyMMdd_HHmmss).sql - 注意:
$(Date:)是 Navicat 内置语法,只在批处理作业编辑器中生效,cmd或任务计划里写无效 - 不支持
strftime或系统环境变量,也不能用%date%,否则生成空文件或报错
Windows 任务计划中三个硬性参数不能错
触发器本身不重要,关键是操作配置是否匹配 Navicat 17 的运行约束:
- “程序或脚本”栏必须填
navicat.exe的**绝对路径**,例如:"C:\Program Files\PremiumSoft\Navicat Premium 17\navicat.exe"(带英文双引号,含空格路径必须引起来) - “添加参数”栏严格写:
--batch-job="daily_backup"(名称必须与你保存批处理作业时输入的完全一致,区分大小写,且带英文双引号) - “起始目录”必须设为
navicat.exe所在目录,例如:C:\Program Files\PremiumSoft\Navicat Premium 17\(否则找不到 JDBC 驱动、语言包、配置缓存)
验证和排查最有效的两步
别等凌晨两点看结果。立刻验证能暴露 90% 的配置问题:
- 手动在
cmd中执行一遍完整命令(复制任务计划里的“程序+参数+起始目录”,cd 进去再运行),观察窗口是否闪退、有无弹窗报错、目标目录是否生成带时间戳的文件 - 打开 Navicat → 工具 → 历史记录 → 勾选“启用历史记录”,再运行一次任务;失败时这里会留下具体步骤卡在哪(比如“连接 test_db 失败:密码错误”)
真正容易被忽略的是:Navicat 17 的批处理作业一旦保存,就绑定当时连接的密码和路径配置,后续改连接属性不会自动同步到已存作业里。每次调整连接后,得重进批处理编辑器点“刷新”或重建作业。











