Это ваш обработчик событий 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
.