#error-handling #ssis #audit
#обработка ошибок #ssis #аудит
Вопрос:
Мы начинаем проект по обработке больших плоских файлов. Эти файлы являются своего рода «нормализованными», и мы хотим сначала обработать их в промежуточный файл.
Я хотел бы видеть пользовательскую таблицу для строк аудита и пользовательскую таблицу для ошибок, которые выдаются во время обработки. Также ошибки должны храниться в журнале событий.
Каковы наилучшие методы в соответствии с аудитом и обработкой ошибок в целом для SSIS (VS2008)?
(редактировать) Мы сделали (я думаю) очень элегантное решение, разработав 1 основной пакет. Этот пакет запускает дочерний пакет (тот, который изначально предназначался). Главный пакет подписывается на 3 события, такие как OnInformation, OnWarning и onError. Эти события направляются в общую службу аудита и ведения журнала, которая выполняет вызовы блоков ведения журнала корпоративной библиотеки и обработки исключений.
Ответ №1:
Что я бы порекомендовал вам, так это принять следующую философию для стабильных процессов etl, исходящих из файлов:
- Никогда ничего не вводите в соединитель, просто импортируйте поля в виде nvarchars максимальной длины, которой они достигнут.
- Процедурно добавьте количество строк для отслеживания ошибок при приведении ошибок.
- Приведите каждый столбец в соответствие с вашей спецификацией и управляйте им.
- Если строка не может быть прочитана на каком-то этапе, вы не узнаете индекс, но будете знать, что файл имеет неправильную форму (по моему опыту, это крайне редко для половины переданных файлов), и его в любом случае следует отклонить.
Краткий снимок экрана части процесса загрузки файла показывает, как может работать отклонение (после присвоения row_id) (ссылка на изображение потока данных). К этому вы можете добавить дополнительные бесчисленные проверки (дубликаты …) и даже иметь репозиторий для загруженных файлов, чтобы проверять наличие отклонений и все остальное, что вы, возможно, захотите контролировать (ссылка на изображение потока управления).
В некоторых моих процессах я даже использую соединитель плоских файлов и просто импортирую каждую строку в виде объемного текста, а затем разбиваю его на столбцы с помощью промежуточного компонента сценария, позволяя использовать разные версии столбцов в файлах.
В любом случае, извините, что не могу быть более подробным (из-за моего статуса я не могу добавить больше ссылок или каких-либо изображений), но я надеюсь, что вы понимаете концепцию.
С уважением,
Франциско.