Получение второго набора данных из источника OLE DB в SSIS

Мне нужно прочитать данные из DB1 и записать их в другую DB2. Я использую сложный запрос с CTE и временными таблицами, и нет, я не могу поместить этот запрос в SPrc. Я использую источник OLE DB и место назначения OLE DB.

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

Я не могу использовать обходной путь «с наборами результатов», потому что это не SProc. Поэтому я пытаюсь использовать другой обходной путь: «SET FMTONLY ON/OFF».

Теперь источник OLE DB принимает мой запрос, но выводит два набора данных: первый пустой, а второй — нужные мне данные. Назначение OLE DB не записывает ни одной строки, поскольку считывается только первый набор результатов, пустой.

Как я могу это решить?

Я не могу изменить временные таблицы в чем-то другом, и в основном я не могу изменить запрос. Я ищу решение SSIS, если это возможно, а не решение SQL. Спасибо.


person Johannes Wentu    schedule 01.09.2016    source источник


Ответы (1)


Для решения SSIS нельзя использовать источник OLE DB. Этот компонент может получить доступ только к первому набору результатов.

Что вы можете сделать, так это использовать преобразование сценария в качестве источника данных, получить доступ ко второму набору результатов обычным способом и отправить его столбцы на выходные данные сценария.

person Tab Alleman    schedule 01.09.2016
comment
Я недостаточно разбираюсь в SSIS, чтобы понять, что вы написали. Вы имеете в виду, что я должен использовать преобразование сценария (ST) ВМЕСТО OLEDBSource и написать в этом ST код C #, который фактически идет в БД для извлечения данных, помещается в набор данных, который будет иметь 2 таблицы, а затем взять вторую таблицу и отправить ее в пункт назначения OLEDB? - person Johannes Wentu; 02.09.2016
comment
Да, именно это я и имею в виду. - person Tab Alleman; 02.09.2016