Navicat 17 不支持原生 WebHook 推送,因其已移除计划任务图形入口且无内置 HTTP 客户端,所有告警需通过外部脚本捕获退出码与日志并调用 Webhook API 实现。

Navicat 17 不支持原生 WebHook 推送,所有「任务完成后触发 HTTP 请求」的需求必须通过外部脚本中转实现;你无法在界面里填 https://api.example.com/webhook 并点启用——这个功能根本不存在。
为什么 Navicat 17 的自动运行里找不到 WebHook 设置项
Navicat 17 已彻底移除「计划任务」图形化配置入口,连邮件通知都只是调用系统级 SMTP 客户端的异步回调,更不用说 WebHook 这类需要完整 HTTP 客户端能力的功能。官方文档和源码均未暴露任何 WebHook 相关 API 或配置字段。
- 所谓“通知”仅限邮件,且依赖操作系统账户或全局 SMTP 配置
- 批处理作业(
.njob)导出后是二进制格式,不可编辑、不包含可注入逻辑的位置 - 即使使用
--run-job命令行调用,Navicat 也只返回进程退出码(0=成功,非0=失败),不提供 stdout/stderr 透传或回调钩子
用 PowerShell 或 Bash 捕获 Navicat 任务结果并调用 WebHook
真实可行的路径是:把 Navicat 任务当作一个黑盒命令执行,再由外部脚本判断其是否成功,并决定是否发起 curl 或 Invoke-RestMethod 请求。
- Windows 下推荐用 PowerShell 封装:用
Start-Process -Wait启动navicat.exe --run-job "MyBackup",检查$LASTEXITCODE - Linux/macOS 下用
navicat --run-job "MyBackup" && curl -X POST https://api.example.com/webhook -d '{"status":"success"}'形式链式执行 - 必须加
-Wait(PowerShell)或确保 shell 等待进程结束,否则 WebHook 会在 Navicat 还没跑完时就发出 - WebHook 请求体建议包含任务名、时间戳、退出码,例如:
{"task":"MyBackup","exit_code":0,"ts":"2026-10-20T13:15:00Z"}
如何让 WebHook 收到详细的错误上下文
Navicat 自身不输出结构化日志,但你可以强制它写入文本日志,再由脚本读取关键行:
- 启动时加
/log "C:\navi_logs\last_run.log"参数(Windows)或--log "/var/log/navicat/last_run.log"(macOS/Linux) - 日志文件末尾通常含
Error、failed、ORA-、SQLSTATE等关键词,可用Select-String -Pattern "Error|failed"或grep -E "(Error|failed)"提取 - 避免直接发送整份日志(可能含密码),只提取匹配行 + 前后 2 行上下文
- 若需 JSON 格式上报,用
ConvertTo-Json(PowerShell)或jq(Linux/macOS)做轻量转换
真正容易被忽略的是:Navicat 的日志内容不稳定——不同版本、不同任务类型(Backup vs Export)的日志格式差异很大,且错误信息常被截断。别指望靠一行正则通吃所有场景,得为每个关键任务单独验证日志解析逻辑。











