SSIS - Использование MERGE T-SQL в тексте команды источника OLE DB - PullRequest
1 голос
/ 11 августа 2011

[SSIS 2008 R2]

Мой поток управления выглядит следующим образом:

  1. Усеченная промежуточная таблица в БД (например, DB_Staging), локальной для SSISсервер ->

  2. Загрузка промежуточной таблицы через поток данных с внешнего сервера SQL (например, DB_SOURCE) ->

  3. ИспользованиеЗапрос T-SQL MERGE на UPDATE, INSERT и DELETE между промежуточной таблицей и таблицей в другой БД (например, DB_DESTINATION), локальной для сервера SSIS

Для третьегошаг, у меня есть задача потока данных подключения к DB_DESTINATION.Для потока данных для этой задачи для источника OLE DB задано значение «Команда SQL», содержащая инструкцию T-SQL MERGE (для краткости приведен запрос):

MERGE   dbo.destination AS dest
USING   (SELECT * FROM DB_STAGING.dbo.source) AS src
ON      ...
    WHEN    MATCHED
            AND ...
            THEN UPDATE SET
                ...
    WHEN    NOT MATCHED BY TARGET
            THEN INSERT 
                ...
    WHEN    NOT MATCHED BY SOURCE
            AND ... 
            THEN DELETE;

Проблема в том, что я получаю ошибку проверки наЗапрос T-SQL MERGE в источнике OLE DB.Я новичок в SSIS, поэтому я не уверен, что не так.Запросы на загрузку промежуточной таблицы и MERGE работают, как я их тестировал в Management Studio.Кто-нибудь может предложить какое-либо руководство?Сообщение об ошибке проверки от BIDS:

Ошибка проверки.DFT_MergeData OLEDB_DB_DESTINATION [1]: команда SQL не возвращала информацию о столбце.

1 Ответ

2 голосов
/ 12 августа 2011

Для источника OLE DB в потоке данных требуется оператор, который выводит данные в столбцах (оператор SELECT). Оператор MERGE не является допустимым оператором для этого.

Если вы хотите использовать инструкцию MERGE, вы должны использовать ее в задаче «Выполнение инструкции SQL» в потоке управления, которая заменит задачу «Поток данных».

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