Рекомендации по использованию OLEDB-адресата с ведением журнала ошибок и транзакций в SSIS
Мы пытаемся загрузить данные из плоских файлов в базу данных SQL Server. Поскольку мы хотим загрузить все или ничего (в случае сбоя 5-го файла из 10-ти файлов мы не хотим, чтобы данные файлов 1-4 сохранялись), мы добавили TransactionOption=Required в цикл foreach. который проходит между файлами. Мы используем назначение OLEDB с быстрой загрузкой. Требование заключается в следующем: нам нужны подробные сведения об уровне строки, в которой произошла ошибка, чтобы мы могли сообщить об этом в службу поддержки исходного приложения. Также, когда происходит откат, данные журнала ошибок должны сохраняться в базе данных.
Проблема заключается в следующем... Если я перенаправляю строки с ошибками из пункта назначения OLE DB, я получаю следующую ошибку.
Ошибка: Невозможно настроить перенаправление OLE DB Destination.Inputs[OLE DB Destination Input] при ошибке с использованием соединения в транзакции.
Если я отключу быструю загрузку, перенаправление возможно, но это сделает загрузку очень медленной, особенно для начальных нагрузок.
Если я решу использовать регистрацию событий служб SSIS, она не даст мне подробностей об уровне строки, таких как данные всей строки, которая не удалась.
Я понимаю, что я не первый, кто сталкивается с этой проблемой.
Я хотел бы попросить помощи у парней, которые были там, сделали то, что является наилучшей практикой для таких сценариев, когда вы хотите загружать плоские файлы в места назначения oledb с поддержкой "все или ничего" и поддержкой ведения журнала, которые содержат подробную информацию о весь ряд, который потерпел неудачу.