Navicat计划任务依赖机制仅识别Completed状态,不响应Skipped或Failed,且无自动重试或中断提示;需确保前置任务明确显示“Completed”,取消条件运行勾选,检查SQL脚本是否强制返回Completed,并避免主程序最小化导致轮询暂停。
navicat 内置的“计划任务”依赖机制只认 completed 状态,不响应 skipped 或 failed,且无法自动重试或报错提示中断——这不是配置没点对,而是它的状态机设计如此。
依赖任务必须显示“Completed”,不能是“已跳过”
Navicat 的依赖逻辑极简:前置任务状态栏里必须明确写着 Completed,哪怕它什么都没干(比如因条件不满足被跳过),后续任务也不会触发。常见诱因是前置任务勾选了「仅当满足以下条件时运行」,结果条件未达成,状态变成 Skipped,整个链就卡死。
- 双击该任务 →「常规」页签 → 取消勾选「仅当满足以下条件时运行」,先验证基础依赖是否通路
- 在任务列表右键 →「执行日志」→ 搜索
Skipped和Completed,别只看“成功”二字 - 若确实需要条件判断,改用「SQL 脚本任务」,在脚本里写
IF EXISTS (...) THEN ... END IF;,确保无论分支都返回Completed
任务调度器显示“已运行”但没动作,大概率是 Navicat 主进程挂起
Navicat 自带调度器不是后台服务,它靠主界面进程轮询触发。一旦窗口完全最小化、被遮挡超 5 分钟,或远程桌面断开,v15/v16 版本会暂停轮询——此时依赖任务看似“已运行”,实则根本没进执行队列。
- 保持 Navicat 主窗口至少标题栏可见,避免托盘化或切换到其他用户会话
- 检查「工具」→「选项」→「常规」中「启用后台任务调度」是否勾选(某些绿色版默认关闭)
- 如需真正无人值守,放弃内置调度器,改用 Windows 任务计划程序调用
navicat.exe --batch-job="task_name",绕过 GUI 生命周期限制
多任务依赖失败时,权限和启动方式是隐形门槛
即使状态和界面都正常,Windows UAC 也会拦截依赖任务所需的系统资源(如写入导出路径、加载 Excel 驱动)。静默失败时,任务调度器可能连完整日志都不生成。
- 右键 Navicat 快捷方式 →「属性」→「兼容性」→ 勾选「以管理员身份运行此程序」
- 关闭所有 Navicat 进程后,**必须用该快捷方式重新启动**,再打开「计划任务」界面重试
- 在「计划任务」右下角确认显示「已连接(管理员)」,否则依赖任务即使触发也会在文件操作阶段失败
依赖关系真正的脆弱点不在界面上的箭头连线,而在于每个环节的状态判定粒度太粗、错误反馈太弱、环境假设太理想——它把“任务完成”等同于“业务成功”,但数据库操作常有中间态(比如备份写了一半磁盘满)。生产环境务必搭配外部日志监控或改用命令行批处理驱动。


















