2012-06-12 4 views
2

У меня есть приложение SSIS, которое должно получать данные из двух баз данных разных серверов (а не ссылок). Мне нужно получить имена совпадений и записи DOB между 2 базами данных, а затем использовать результаты для вставки/обновления таблицы. Мой первоначальный подход - использовать источник OLE DB, затем Merge Join и поместить результаты в набор записей. Затем в режиме управления используйте результаты набора записей для вставки/обновления таблицы. Но я не могу видеть набор записей в потоке управления. Альтернативное решение - создать временные таблицы. Но временные таблицы не видны, так как они находятся в базе данных tempdb для каждого сервера. Что лучше подходит для решения этой проблемы?SSIS: таблица записей или temp

+0

Данные на сервере A и сервере B. Является ли один набор таблиц драйвером, а другой ссылкой или оба набора необходимо объединить и загрузить в конечный пункт назначения? – billinkc

ответ

1

что вы подразумеваете под put the results to recordset?

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

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

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

+0

Спасибо за ваш ответ. Я использовал назначение OLE DB, а затем создаю другой пакет для обновления остальных таблиц с помощью команды OLD DB. – dmarkez

1

В этом случае я бы сохранил базу данных для рабочей таблицы или создал схему для этих рабочих таблиц.

Затем добавьте задачу потока управления SQL, которая усекает таблицу, которая будет удерживать промежуточный результат. После этого загрузите промежуточный результирующий набор в таблицу, выполните операцию и, возможно, снова обрезайте таблицу.

Пункт назначения записей подходит для небольших наборов данных. Но если вы планируете использовать его для больших наборов данных, которые не подходят для памяти, это будет очень медленно.

Если у вас нет базы данных/схемы, которая может служить рабочим пространством, вы можете использовать RAW-файлы для хранения промежуточного результата. Это очень быстро.

Смежные вопросы