Вот как мне удалось отследить «возвращенное состояние» из пакета служб SSIS, вызываемого через задание агента SQL. Если нам повезет, это может относиться к вашей системе.
... и тогда это становится грязным, так как вы можете получить множество значений, возвращаемых из 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), потому что процесс выполняется слишком долго». У нас никогда не было этого - о чем я знаю, - но когда я писал это, они были супер-параноидальными, поэтому мне пришлось изучить это ...