Обновление потока данных служб SSIS - PullRequest
2 голосов
/ 02 декабря 2010

Я пытаюсь найти лучший способ приблизиться к следующему сценарию.

Обзор

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

Процесс

Шаг 1 - Каждая запись платежа должна сопоставляться сБаза данных Oracle, чтобы гарантировать, что значение, указанное в записи платежа, существует в базе данных Oracle.Платежи, удовлетворяющие этому шагу, перемещаются по конвейеру.

Шаг 2 - Платежи вставляются в базу данных Oracle, а любые ошибки вставки перенаправляются в набор записей.

Подход

Я использую источник данных OLEDB для платежей (SQL Server) и для значений поиска (Oracle), а затем использую соединение слиянием (Left Outer) для добавления данных к платежам.Используя условное разделение на основе результатов объединения слиянием, я передаю платежи, которые соответствовали поисковым данным, в назначение OLEDB.

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

1 Ответ

1 голос
/ 03 декабря 2010

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

...