我有一个 SQL 2008 代理作业,只需一步Operating system (CmdExec)
:
C:\Scripts\Script.cmd
Script.cmd
运行CS-脚本。
如果我运行C:\Scripts\Script.cmd
,一切都会正常显示——我得到了预期的日志输出并echo %ERRORLEVEL%
显示 0。
但是,当我通过 SqlAgent 运行它时 - 我得到了预期的日志输出,然后
The system cannot find the file specified.
Process Exit Code 1.
The step failed.
日志输出完整且正确,因此做运行批处理文件和批处理文件调用的 EXE。CS-Script 执行的最后一件事是:
Console.WriteLine("Exiting at 2009-09-22 16:10:32 with Status {0}", exitCode);
return (int)exitCode;
它会完整地记录在输出中。
找不到什么文件?
答案1
清除 CS-Script 的缓存就解决了问题。Procmon 并没有真正起到帮助作用,但确实显示了对用户缓存文件夹的访问,C:\Users\sql-agent-svc\AppData\Local\Temp\CSSCRIPT\Cache
这促使我尝试清除它。
由于它是每个用户的缓存,以管理员身份手动运行 CS-Script 会使用没有问题的不同缓存。
据我了解,缓存只是为了避免重新编译未更改的脚本 - 因此它实际上不应该导致任何问题。但是,删除它并让 CS-Script 重新创建它似乎有效。