SSIS: проблема OnPostExecute OnError

У меня есть пакет SSIS, в котором я устанавливаю обработчики событий OnError и OnPostExecute. Пакет представляет собой простой контейнер цикла, и обработчик OnPostExecute работает нормально.

Но OnError на самом деле не работает. Я добавил неправильный код в задачу внутри цикла просто для проверки обработчика OnError, и он не активируется. Обработчик OnPostExecute работает после самого процесса внутри цикла.

С другой стороны, я попытался выполнить задачу OnError самостоятельно, и она сработала. Таким образом, он не активируется, когда происходит ошибка.

Немного информации. Я установил для системной переменной Propagate значение FALSE для каждой задачи внутри цикла, так как я не хочу, чтобы пакет останавливался. (возможно, это как-то связано с этим) Обработчик OnError находится на уровне пакета.

Любая идея о том, что OnError не выполняется, когда процесс находит ошибку? Спасибо


person Daniel Sh.    schedule 25.04.2012    source источник
comment
вопрос 1: работает ли это, когда распространение TRUE? вопрос 2: как у вас работает пакет? f5?   -  person Diego    schedule 25.04.2012
comment
1. Нет, не работает, разница в том, что процедура останавливается после первой ошибки. Но OnError не активируется. 2. Я запускаю его с помощью кнопки воспроизведения с помощью мыши, и я также пробовал с помощью F5. Благодарность   -  person Daniel Sh.    schedule 25.04.2012
comment
Вы решили свою проблему? С поставщиком журналов по умолчанию для SQL Server я не могу получить какое-либо событие OnError в моей таблице dbo.sysssislog, даже если я вижу ошибку во время отладки на вкладке «Результаты выполнения». Моя цель состояла в том, чтобы избежать пользовательских обработчиков событий OnError.   -  person Andre Albuquerque    schedule 12.07.2012
comment
Я не должен быть честным. К счастью, я смог двигаться дальше, так как ошибки внутри цикла не критичны. Я почти уверен, что это как-то связано с самим пакетом, потому что другие активировали событие OnError, когда что-то пошло не так. И да, я всегда использую собственный обработчик событий по причинам компании.   -  person Daniel Sh.    schedule 12.07.2012
comment
После некоторого копания я решил свою проблему. Я использовал свойство RetainSameConnection=true в своем диспетчере соединений (я управляю транзакциями внутри пакета) и разделял его между задачами ведения журнала и пакетами. Когда я отключил RetainSameConnection, я получил ожидаемые события OnError. Решение состояло в том, чтобы создать еще один диспетчер соединений исключительно для ведения журнала.   -  person Andre Albuquerque    schedule 12.07.2012


Ответы (1)


Проверьте свойство DisableEventHandlers. Убедитесь, что для любой из задач, которые он не запускает, установлено значение false.

person Diego    schedule 25.04.2012