Как заставить 2 источника данных объединиться в SSIS? - PullRequest
1 голос
/ 26 мая 2010

Я довольно новичок в SSIS. Я столкнулся с ситуацией, когда мне нужно использовать задачу потока данных. Источник данных - MS-SQL Server 2008, а назначение - список Sharepoint. Я дал запрос SQl для объекта источника данных как

SELECT     Customer_ID, Project_ID, Project_Name, Project_Manager_ID, Project_Manager_Name, DeliveryManager1_ID, DM1NAME FROM dbo.LifeScience_Project
WHERE (Customer_ID IN ('1200532', '1200632', '1207916', '1212121', '1217793', '1219351', '1219417', '1219776'))

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

SELECT     Customer_ID, Project_ID, Project_Name, Project_Manager_ID, Project_Manager_Name, DeliveryManager1_ID, DM1NAME FROM dbo.LifeScience_Project
WHERE Customer_ID IN (select customer_id from [Database2].Customer_Master)

Пожалуйста, помогите мне реализовать это.

Ответы [ 2 ]

1 голос
/ 27 мая 2010

Я бы запустил один запрос в задаче «Выполнить sql», в которой был бы составлен список идентификаторов клиентов и сохранен результат в переменной: -

Объявить @s varchar (макс.)

Set @s = '' SELECT @s = @s + '' '' + Cast (customer_id как varchar (20)) + '' ',' ОТ (выберите customer_id из [Database2] .Customer_Master) как T

Выберите @ с

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

ВЫБРАТЬ Customer_ID, Project_ID, Project_Name, Project_Manager_ID, Project_Manager_Name, DeliveryManager1_ID, DM1NAME FROM dbo.LifeScience_Project ГДЕ (Customer_ID IN (?))

0 голосов
/ 26 мая 2010

Вы должны использовать компонент Lookup в своей задаче потока данных. Например, напишите свой первый запрос в компоненте OLEDB, выбрав команду SQL в режиме доступа к данным, просто потянув все, т. Е.

ВЫБЕРИТЕ Customer_ID, Project_ID, Project_Name, Project_Manager_ID, Project_Manager_Name, DeliveryManager1_ID, DM1NAME
ОТ dbo.LifeScience_Project

Затем подключите этот источник к компоненту Lookup и в компоненте Lookup, вместо выбора таблицы поиска, выберите параметр SQL и введите второй запрос:

выберите customer_id
из [Database2] .Customer_Master

Теперь выполните поиск, соответствующий двум полям Customer_ID, и выводите только результаты при успешных совпадениях. Если вам нужны конкретные идентификаторы, вы можете добавить их ко второму запросу следующим образом:

выберите customer_id
из [Database2] .Customer_Master
ГДЕ customer_id IN ('someid', 'someid2', ...)

Вот как бы я это сделал.

EDIT:
В ответ на дополнительные вопросы Сушанта для уточнения.
(1) Вы хотите использовать выход MATCH при наведении рядов NOT NO MATCH.
(2) Да, это верно, убедитесь, что ваш источник данных указывает на другую базу данных (не на SQL2008).
(3) В столбце Tab вы просто сопоставляете Customer_ID с Customer_ID;
(4) На вкладке «Дополнительно» вам не нужно ничего делать. На вкладке «Ошибка» вы можете выбрать «Игнорировать ошибки», так как вас не интересуют несоответствия.
(5) Да, это правильный поток - при подключении к Sharepoint появляется запрос, хотите ли вы перенаправить выход MATCHED из вывода Lookup или UNMATCHED. Вы хотите выбрать выход MATCHED, как я упоминал в пункте (1).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...