Пакет служб SSIS не запускается при вызове шага в задании SQL - PullRequest
3 голосов
/ 27 мая 2009

У меня есть файл .dtsx (пакет служб SSIS), который загружает файлы с FTP-сервера и импортирует данные. Он работает нормально, когда я запускаю его вручную. Однако, когда я планирую вызвать пакет как шаг в задании агента SQL-сервера, он завершается неудачно. Шаг, на котором это терпит неудачу, является тем, где я называю .bat файл Ошибка в средстве просмотра истории заданий говорит следующее:

Ошибка: 2009-05-26 12: 52: 25,64
Код: 0xC0029151 Источник: Выполнить командный файл Выполнить задачу процесса
Описание: Выполняется "D: \ xxx \ import.bat" "" at "", The код завершения процесса был "1", в то время как ожидалось "0". Ошибка завершения DTExec: Выполнение пакета возвращено DTSER_FAILURE (1).

Я думаю, что это проблема с разрешениями, но я не знаю, как ее решить. Владелец работы - администратор, поэтому я убедился, что у них есть права доступа к каталогу, в котором находится файл .bat. Я попытался зайти в службы и изменить параметр «Вход в систему» ​​для агента SQL Server, и ни один из этих вариантов не работает (учетная запись локальной системы и эта учетная запись). У кого-нибудь есть идеи относительно того, какие другие разрешения необходимо настроить, чтобы это работало?

Ответы [ 5 ]

2 голосов
/ 23 августа 2012

Для меня это была проблема с разрешениями. Перейдите в Среда -> Каталоги, затем измените Локальный каталог на то, что SQLAgentUser может получить к нему доступ. Я использовал C: \ temp. Нажмите на раскрывающееся меню «Сохранить» и выберите «Установить значения по умолчанию».

1 голос
/ 28 мая 2009

Я попытался выполнить только пакетный файл в качестве шага задания SQL, и он дал больше подробностей. Он показал, что произошел сбой, когда я пытался вызвать исполняемый файл, который находился в том же каталоге, что и мой .bat-файл, но не в каталоге windows / system32, откуда он выполнялся.

Я переместил исполняемый файл в каталог system32, но потом понятия не имел, куда загружаются мои файлы. Затем я обнаружил, что есть свойство для задачи «Выполнение процесса» (которое выполняет .bat) с именем WorkingDirectory. Я установил этот каталог как каталог, в котором находится bat, переместил исполняемый файл обратно в тот же файл, что и файл .bat, и теперь он работает, как и ожидалось.

1 голос
/ 27 мая 2009

Выполняете ли вы задание SSIS в пакетном файле или пакетный файл является шагом в потоке управления службами SSIS?

Я предполагаю последнее для этого ответа. Какую задачу вы используете для выполнения командного файла (например, простую задачу выполнения программы или задачу сценария). Если последнее, похоже, что ваш пакетный файл на каком-то шаге действительно не работает, а не сценарий служб SSIS. Я бы проверил разрешения того, к чему ваш пакетный файл пытается получить доступ

На самом деле, может быть лучше переписать пакетный файл как задачу скрипта в SSIS, потому что вы получите намного лучшую отчетность об ошибках (она сообщит вам, какой шаг в скрипте завершился неудачей).

Вы можете попробовать выполнить командный файл с помощью команды runas в командном окне. Если вы попытаетесь выполнить его под локальной или сетевой системной учетной записью, это даст вам лучшую ошибку. Если произойдет ошибка, вы можете проверить уровень ошибки, выполнив «echo% ERRORLEVEL%».

Если это был не последний вариант, а пакет SSIS выполняется через командный файл, почему?

0 голосов
/ 29 февраля 2016

У меня была та же ошибка, и я решил ее, войдя в учетную запись пользователя, который выполняет задание, открыл там соответствующий сайт Coreftp, протестировал доступ к сайту, внес изменения (в моем случае мне пришлось повторно новый пароль) и теперь это работает. Так что да, это проблема доступа к файлам. Это файл доступа к рассматриваемому сайту coreftp.

0 голосов
/ 27 мая 2009

Возможно, у вас есть доступ к подключенному диску в вашем файле .bat? Если это так, вы не можете полагаться на подключенный диск из службы, поэтому вам придется использовать UNC-путь.

...