Задание агента SQL Server 2005 выполняется, но не выводится - PullRequest
0 голосов
/ 21 апреля 2010

По сути, у меня есть задание, которое выполняется в BIDS и является автономным пакетом, и хотя оно работает под агентом SQL Server, оно не завершается должным образом (хотя сообщений об ошибках нет).

Этапы заданияявляются:

1) Удалить все строки из таблицы;

2) Использовать для каждого цикла для заполнения таблицы из таблиц Excel;

3) Очистить таблицу.

Я пробовал эту страницу MS (шаги 1 и 2), не видел необходимости начинать переходить с безопасности на стороне сервера.

Также SQLServerCentral.com для эта страница , без разрешения.

Как получить журнал ошибок или исправление?

Примечание. Я повторно отправил сообщение об ошибке сервера, поскольку это один из тех вопросов, которые неЧистый администратор или программирование.

Я вошел в систему как учетная запись прокси, под которой я работаю, и задание выполняется отдельно, но жалуется, что таблицы Excel пусты?

Ответы [ 3 ]

1 голос
/ 21 апреля 2010

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

  • Работа вызывает хранимую процедуру
  • Процедура создает вызов DTEXEC (с дюжиной или более параметров)
  • Процедура вызывает xp_cmdshell с вызовом в качестве параметра (@Command)
  • Пакет служб SSIS работает
  • «локальная» переменная SSIS инициализируется как 1
  • Если возникает ошибка, «поток» служб SSIS переходит к шагу, который устанавливает для этой локальной переменной значение 0
  • На последнем шаге используйте выражения, чтобы задать для свойства SSIS "ForceExecutionResult" эту локальную переменную (1 = успех, 0 = отказ)
  • Полная форма вызова служб SSIS сохраняет возвращаемое значение следующим образом:

    EXECUTE @ReturnValue = master.dbo.xp_cmdshell @ Command

... и тогда это становится грязным, так как вы можете получить множество значений, возвращаемых из SSIS. Я записал действия и действия в таблицу БД, проходя через шаги SSIS, и проконсультировался с этим, чтобы попытаться все уладить (отсюда и @Description ниже). Вот соответствующий код и комментарии:

--  Evaluate the DTEXEC return code
SET @Message = case
                 when @ReturnValue = 1 and @Description <> 'SSIS Package' then 'SSIS Package execution was stopped or interrupted before it completed'
                 when @ReturnValue in (0,1)   then ''  --  Package success or failure is logged within the package
                 when @ReturnValue = 3        then 'DTEXEC exit code 3, package interrupted'
                 when @ReturnValue in (4,5,6) then 'DTEXEC exit code ' + cast(@Returnvalue as varchar(10)) + ', package could not be run'
                 else 'DTEXEC exit code ' + isnull(cast(@Returnvalue as varchar(10)), '<NULL>') + ' is an unknown and unanticipated value'
               end
--  Oddball case: if cmd.exe process is killed, return value is 1, but process will continue anyway
--  and could finish 100% succesfully... and @ReturnValue will equal 1.  If you can figure out how,
--  write a check for this in here.

Последнее ссылается на ситуацию «что, если во время работы SSIS какой-то администратор-шутник завершает сеанс CMD (скажем, из TaskManager), потому что процесс выполняется слишком долго». У нас никогда не было этого - о чем я знаю, - но когда я писал это, они были супер-параноидальными, поэтому мне пришлось изучить это ...

0 голосов
/ 26 апреля 2010

Я исправил это в конце концов, спасибо за предложения.

По сути, я вошел в Windows с учетной записью прокси-пользователя, с которой работал, и начал видеть такие ошибки, как: «Для каждого файла перечислитель пуст»

Я скопировал файлы проекта и начал тестирование. Оказалось, что я все же оставил путь к файлу (N: /) в свойствах поля For Each loop, хотя я изменил свойства соединения. Проще, когда у вас есть условия ошибок для работы. Я также должен был воссоздать отображение переменных.

Не удивительно, что люди просто воссоздают весь пакет.

Теперь исправлено и работает!

0 голосов
/ 21 апреля 2010

Почему бы не использовать протоколирование, встроенное в SSIS? Мы отправляем наши журналы в таблицу базы данных, а затем анализируем их в другой таблице в более удобном для пользователя формате и можем видеть каждый шаг каждого выполненного пакета. И каждая ошибка.

...