Обработчик событий служб SSIS - PullRequest
2 голосов
/ 07 мая 2019

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

когда я иду к результатам выполнения, у меня есть две строки ошибки:

один с ошибкой: XXX

и другие с ошибкой [задача выполнения]: XXX

enter image description here

информация:

  • Я не могу использовать обработчик в верхнем дереве пакета, потому что у меня есть другие ошибки для управления.
  • Я использую тот же механизм в других контейнерах в той же упаковке
  • я улавливаю ошибку из потока управления, а не из потока данных

Я использую обработчик событий, и в случае события у меня установлена ​​таблица обновления задачи. Comment =? где id =?

enter image description here

большое спасибо

Ответы [ 2 ]

2 голосов
/ 07 мая 2019

Это ваш обработчик событий SQL, который вызывает проблему:

update table set comment = ? where id = ?

Вы перезаписываете первое сообщение об ошибке вторым.

Чтобы перехватить их оба, используйте INSERT вместо.

Редактировать

Если вы хотите вставить только первое сообщение об ошибке, вы можете добавить переменную Boolean в пакет служб SSIS, которая называется ErrorSet.Например, в начале пакета установлено значение false.Затем вы могли бы передать это в обработчик ошибок и сделать что-то вроде (где первый ? равен «ErrorSet»):

IF ? = 0
    update table set comment = ? where id = ?
;

SELECT CAST(1 AS bit) ErrorSet

Затем вы записали бы результат «ErrorSet» обратно в SSISПеременная пакета, которая предотвратит дальнейшие обновления.

Вы также можете охватить это различными областями вашего пакета, либо используя разные переменные, либо сбросив эту переменную обратно на false.

1 голос
/ 07 мая 2019

из @ChrisMack answer:

Проблема связана с обработчиком событий SQL:

update table set comment = ? where id = ?

Первое сообщение об ошибке перезаписывается вторым.

Я добавил задачу выражения, чтобы заставить значение поместить его непосредственно в таблицу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...