Сбой задания агента SQL при вызове пакетного файла с переменными среды

Я получаю сообщение об ошибке, когда запускаю задание агента SQL Server, которое вызывает пакет служб SSIS, который затем запускает «выполнение задачи процесса» пакетного файла. В частности, ошибка, которую я получаю, это

При выполнении "d:\apps\bin\DoExport.bat" "-out ACNOR.TXT" в "" код завершения процесса был "1", а ожидаемый - "0".

Затем я могу увидеть дальше ошибку, которая говорит:

%HOMEDRIVE%%HOMEPATH%: Нет такого файла или каталога в D:/apps/perl/line.pm, строка 1345. BEGIN не удалось — компиляция прервана в d:/apps/bin/Import/JDBC_DBH.pm, строка 25. Ошибка компиляции. в строке 280 d:/apps/bin/Import/DBWrapper.pm.

Я предполагаю, что это проблема с разрешениями моего агента SQL, потому что я могу запустить это в интерактивном режиме в BIDS на этом сервере.

Агент работает с идентификатором SQL, который имеет разрешение системного администратора на сервере SQL, а также имеет доступ администратора на сервере, на котором он работает. В службах SQL-сервера (SQL Server, агент SQL Server и службы интеграции SQL Server) у меня есть настройка идентификатора, которая также имеет доступ администратора к серверу.

Есть идеи, что может быть причиной этой проблемы?


person Schwimms    schedule 13.05.2020    source источник
comment
Является ли пользователь агента SQL Server учетной записью домена или чем-то вроде NT Service\MSSQL$SQLAGENT? Я не уверен, что ссылка на %HOMEPATH% работает с последними типами. Вы также можете попробовать добавить свое имя пользователя в качестве учетной записи прокси-сервера выполнения SSIS в SQL Server, чтобы убедиться, что это проблема, связанная с учетными данными.   -  person Gigga    schedule 14.05.2020
comment
Спасибо за ответ. Пользователь агента SQL Server — это учетная запись домена, которая также настроена как учетная запись-посредник для этого задания.   -  person Schwimms    schedule 14.05.2020
comment
Это немного длинновато, но как насчет 32-битной и 64-битной версии, какой у вас сервер? Изменили ли вы свойства проекта SSIS для работы в 64-разрядной версии? Если нет, попробуйте изменить этап задания на 32-разрядный (stackoverflow.com/a/28325980/5605866)   -  person Gigga    schedule 14.05.2020
comment
Я пробовал оба и все равно получил ту же проблему.   -  person Schwimms    schedule 15.05.2020
comment
Интересная проблема. Что на самом деле делают bat и perl-файлы? Можете ли вы показать их содержимое? Хотя бы из файла line.pm, строка 1345 и несколько строк вокруг нее плюс bat файл.   -  person Gigga    schedule 16.05.2020
comment
Я подумал, как обойти .. опубликовать это сейчас.   -  person Schwimms    schedule 19.05.2020


Ответы (1)


Лучшее, что я мог сделать, это просто жестко запрограммировать %HOMEDRIVE%%HOMEPATH% в первой части DoExport.bat. Не идеально, но лучше, чем ничего. Пример:

SET HOME=C:\Users\UserX
SET HOMEDRIVE=C:
SET HOMEPATH=C:\Users\UserX
person Schwimms    schedule 18.05.2020