Поскольку вам необходим полный набор транзакций из Системы A, это ограничивает ваши возможности в отношении источника.Я рекомендую перенести эти данные в пункт назначения необработанных файлов.Это поможет вам в процессе разработки, поскольку вы можете просто запускать задачи, которые нуждаются в этих данных снова и снова, без повторной загрузки.Также убедитесь, что исходные данные отсортированы на исходном компьютере.Служба SSIS очень слаба в сортировке, если только вы не используете сторонний компонент (в некоторых случаях это может быть ограничивающим карьеру решением).
В любом случае, давайте предположим, что у вас есть этот отсортированный необработанный файл.Следующее, что вы делаете, это добавляете это в поток данных как источник необработанных файлов.Затем, иметь источник OLEDB (или любой другой), который представляет Систему B. Вы можете использовать Raw File для этого, также, если хотите.Убедитесь, что данные из системы B отсортированы с использованием тех же столбцов, которые использовались для сортировки системы A.
Отметьте источники с помощью IsSorted = True и установите значение SortKey для соответствующих столбцов в метаданных.Это скажет SSIS, что данные предварительно отсортированы, и позволит вам присоединиться к вашим ключевым столбцам.В противном случае вы можете подождать несколько дней, пока службы SSIS отсортируют большие наборы.
Добавьте мультикасты к источникам как системы A, так и системы B. потому что мы хотим использовать их дважды.
Затем добавьте объединение слиянием.объединить два исходных файла.Сделайте Систему A левым входом.Система B станет правильным входом при подключении к Merge Join.SSIS автоматически настроит JOIN на те отсортированные столбцы, которые вы отметили на предыдущем шаге.Установите Merge Join, чтобы использовать LEFT JOIN.Таким образом, мы можем найти строки в системе A, которые не существуют в системе B, и мы можем сравнить существующие строки, чтобы увидеть, были ли они изменены.
Затем добавьте условное разбиение.Там вы можете определить 2 выходных буфера в зависимости от условий.
NewRows: ISNULL (MyRightTable.PrimaryKey)
updatedRows: [независимо от того, что представляет собой обновленную строку]
Вывод по умолчанию будет принимать те строки, которые не соответствуют этим двум условиям, и их можно безопасно игнорировать.
Мы еще не закончили.
Добавить еще одно объединение слиянием.
Этовремя, сделайте вход от MultiCast системы B левый вход.Сделайте ввод из MultiCast системы A правильным входом.Опять же, SSIS установит для вас ключи соединения.Установите объединение слиянием, чтобы использовать левое объединение.
Добавить условное разбиение вниз по этому потоку, и единственное, что вам нужно, это:
DeletedRows: ISNULL (MyRightTable.PrimaryKey)
Выход по умолчанию будет занимать все остальные строки, которые можно игнорировать.
Теперь у вас есть 3 буфера.
2 из них выходят из вашего первогоОбъединение Присоединяйтесь и представляйте новые строки и обновленные строки.1 из них выходит из вашего второго объединения слиянием и представляет удаленные строки.
Действуйте.