Navicat定时备份未生成.nb3文件,根本原因在于Windows任务计划未正确触发或执行失败;需检查任务历史记录中的退出码、使用本地绝对路径、配置正确凭据与权限,并确保路径无空格/中文/特殊字符。

Navicat定时任务执行后没生成.nb3文件,先查 Windows 任务计划是否真触发了
Navicat 自身的“自动运行”界面显示“已执行”,不代表备份真的发生了——它只是 UI 层面的轮询标记,实际执行依赖 Windows 任务计划程序(taskschd.msc)。如果 Navicat 没注册到系统级调度器,或注册失败,任务根本不会启动进程。
打开「任务计划程序」→ 找到以 Navicat 或你的数据库名命名的任务 → 右键「属性」→ 「历史记录」选项卡必须勾选「启用此任务的历史记录」。否则你看不到任何失败线索。
- 没勾历史记录,就等于没日志:任务看似运行了,但退出码是
0xC0000022(权限拒绝)或0x1(找不到navicat.exe)你也看不到 - 任务状态显示“已运行”但无文件?点「历史记录」→ 查最后几条的「操作代码」,这是唯一可信依据
- 常见假成功:任务计划里显示“已运行”,但 Navicat 进程一闪而过,没来得及写文件——说明路径、权限或参数有硬伤
备份路径填了 UNC 或映射盘符,.nb3 文件必然消失
Navicat 所有版本(含 v17)只接受本地绝对路径,比如 C:NavicatBackupsmydb_%Y%m%d.nb3。填
asackups 或 Z:ackups 看似能保存设置,但执行时会静默失败,或生成 0KB 的空文件。
- UNC 路径在非交互式服务上下文(如计划任务)中不可见;映射盘符(Z:)默认不继承到后台进程
- 验证方法:在 CMD 中执行
echo test > \nasackups est.txt,如果报错,OS 层就不通,Navicat 更不可能绕过 - 正确做法:设本地中转目录(如
C:TempNavicatBackup),确保当前用户对该目录有「完全控制」权限,再用robocopy同步出去
任务计划里没填登录密码或勾错选项,备份直接跳过
Windows 任务计划要求明确的凭据才能在用户未登录时运行 Navicat。只勾「不管用户是否登录都运行」不够,还必须满足三个硬条件:
- 「安全选项」里勾了「使用最高权限运行」,否则无法调用
mysqldump等底层工具 - 「常规」选项卡中填了当前 Windows 账户的明文密码(Microsoft 账户需注意凭据管理器是否同步更新)
- 「触发器」里没误勾「只在用户登录时运行」——锁屏即失效,关机更不用提
- 如果 Navicat 安装在
C:Program Files下,且没加英文双引号包裹路径(如"C:Program FilesPremiumSoftNavicat Premium avicat.exe"),UAC 会拦截启动
备份目标路径含空格、中文或特殊字符,.nb3 写入会中断
Navicat 底层调用的是 mysqldump 或 pg_dump,这些命令行工具对路径解析极脆弱。哪怕路径只是多了个全角空格或中文括号,也会导致参数截断、静默退出。
- 错误路径示例:
C:My Backups、C:数据库备份、C:Navicat(测试) - 正确路径应全英文、无空格、无括号、无波浪线,例如:
C:NavicatBackups - 文件名模板可用变量,但路径本身不能含变量;
%Y%m%d只能出现在文件名部分,不能塞进路径里 - 若必须用带空格路径,整个路径必须用英文双引号包裹,且确保 Navicat 启动命令里也做了同样处理(导出的 .bat 脚本里要检查)


















