2009-09-02 6 views
1

У меня есть хранимая процедура, которая возвращает 2 записи и содержит оператор select из таблицы temp. Поэтому, когда я использовал этот хранимый процесс внутри источника OLEDB в SSIS и просто пытался вставить набор записей в таблицу SQL-адресата с использованием назначения OLEDB.Таблица SSIS + Temp

Его метание ошибки в стороне источника, говоря:

[OLE DB Source [1661]] Ошибка: набор строк на основе команды SQL не был возвращен поставщиком OLE DB.

Кроме того пытался с множеством NOCOUNT на и с SET FMTONLY OFF

Но никакой пользы ...........

Нужна помощь в этом ........

+0

Не могли бы вы разместить код внутри SP? – Burnsys

+0

Запросы, содержащие использование временных таблиц, не работают при вызове из SSIS. Может быть ошибкой продукта. – Faiz

ответ

2

У меня была аналогичная проблема раньше, и это произошло из-за того, что SSIS не смог определить выход для динамического SQL. Я решил это, включив в форму запроса «поддельный» выбор в верхней части запроса, который соответствовал ожидаемому результату. т.е.


CREATE PROCEDURE MyStoredProc 
AS 

    SELECT 1 As Field1, 2 As Field2, 3 As Field3 -- list of fields of appropriate type 
    WHERE 1 = 0 -- so nothing is actually returned 

    -- Real SQL goes here. 

GO 

+0

Не будет ли это вернуть набор записей NULL? – Faiz

+0

Да, но когда SSIS анализирует запрос, он подберет правильную схему. Странно, но он работает. –

+1

Аналогичная методика с использованием блока IF 1 = 2, рекомендованного в следующей статье: http://www.sqlservercentral.com/articles/Integration+Services+(SSIS)/65112/ – Jeff

0

Используйте такое же соединение и сделать проверку задержки = истина