Аудит и обработка ошибок в SSIS

#error-handling #ssis #audit

#обработка ошибок #ssis #аудит

Вопрос:

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

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

Каковы наилучшие методы в соответствии с аудитом и обработкой ошибок в целом для SSIS (VS2008)?

(редактировать) Мы сделали (я думаю) очень элегантное решение, разработав 1 основной пакет. Этот пакет запускает дочерний пакет (тот, который изначально предназначался). Главный пакет подписывается на 3 события, такие как OnInformation, OnWarning и onError. Эти события направляются в общую службу аудита и ведения журнала, которая выполняет вызовы блоков ведения журнала корпоративной библиотеки и обработки исключений.

Ответ №1:

Что я бы порекомендовал вам, так это принять следующую философию для стабильных процессов etl, исходящих из файлов:

  1. Никогда ничего не вводите в соединитель, просто импортируйте поля в виде nvarchars максимальной длины, которой они достигнут.
  2. Процедурно добавьте количество строк для отслеживания ошибок при приведении ошибок.
  3. Приведите каждый столбец в соответствие с вашей спецификацией и управляйте им.
  4. Если строка не может быть прочитана на каком-то этапе, вы не узнаете индекс, но будете знать, что файл имеет неправильную форму (по моему опыту, это крайне редко для половины переданных файлов), и его в любом случае следует отклонить.

Краткий снимок экрана части процесса загрузки файла показывает, как может работать отклонение (после присвоения row_id) (ссылка на изображение потока данных). К этому вы можете добавить дополнительные бесчисленные проверки (дубликаты …) и даже иметь репозиторий для загруженных файлов, чтобы проверять наличие отклонений и все остальное, что вы, возможно, захотите контролировать (ссылка на изображение потока управления).

В некоторых моих процессах я даже использую соединитель плоских файлов и просто импортирую каждую строку в виде объемного текста, а затем разбиваю его на столбцы с помощью промежуточного компонента сценария, позволяя использовать разные версии столбцов в файлах.

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

С уважением,

Франциско.