У меня есть задание агента 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;
который регистрируется в выводе, и полностью.
Какой файл не может найти?
Очистка кеша CS-Script сделала свое дело. Procmon действительно не помог, но показывал попадания в папку кеша пользователя в C:\Users\sql-agent-svc\AppData\Local\Temp\CSSCRIPT\Cache
что побудило меня попробовать его очистить.
Поскольку это кеш для каждого пользователя, запуск CS-Script от имени администратора вручную использовал другой кеш, в котором не было проблем.
Насколько я понимаю, кеш предназначен только для того, чтобы избежать перекомпиляции неизмененного скрипта - так что это действительно не должно вызывать никаких проблем. Но удаление его и разрешение CS-Script воссоздать его, похоже, сработало.