背景:
最近团队开始使用Kettle做ETL开发。网上通用的作业/转化自动化方案是依赖windows自身的任务计划程序实现的。鉴于任务计划程序的失败没有办法在执行失败时发出通知邮件,所以想尝试看是否能够用SQLAgent调用DOS命令的方式实现自动化。
方案:
1. 在SQLAgent中建立作业。添加类型为“操作系统(Cmdexec)”的作业步骤,内容如下图:
2. 完成后续配置后运行作业,结果运行失败。错误如下:
排查:
1. 是否脚本有问题。
解决:命令行运行上述命令,转换调用成功。
2. 是否与Kettle资源库和数据库配置文件存储位置有关。作业以SYSTEM身份执行,配置文件夹存在登陆用户下,由此猜想是否无法读取相关配置。
解决:把配置文件夹复制到Administrator用户下。再次运行作业,作业执行成功。
结果:
Kettle日志库中并没有转换被执行的日志记录,目标库也没有记录生成。以此方案调用Kettle作业也没有日志记录。
由此判定方案无效。
PS:有空再看看能怎么改进吧。。。