Как вставить в пункт назначения oledb из команды oledb

Я пытаюсь вставить в место назначения ole db результат sp для каждой записи в источнике ole db,

sp возвращает набор записей

Я нашел это, как вызвать хранимую процедуру в SSIS

но я все еще не могу видеть столбцы выхода в выходных столбцах команды OleDb

вот мой зр:

create PROCEDURE [dbo].[GetData] (
    @user        varchar(50)
) AS
set nocount on
-- Publish metadata for ssis
if 1=0
begin
    select '' x, '' y, '' z
end

declare @user_tmp table
(
    x varchar(max),
    y varchar(max),
    z varchar(max)
)

insert into @user_tmp
    select 'x1' x, 'y1' y, 'z1' z

select distinct *  from @user_tmp
set nocount off 

3 ответа

Я не пробовал табличные переменные, но я знаю, что SSIS не распознает поля, если вы используете временные таблицы, и табличные переменные могут иметь одинаковое ограничение. Однако он распознает поля, если вы используете CTE. Если вы можете перейти на использование CTE, ваш процесс может работать.

  • Используйте источник OLE DB для получения выходных данных хранимой процедуры в потоке данных.
  • Не используйте команду OLE DB в качестве источника.
  • Используйте место назначения OLE DB для места назначения вывода источника OLE DB (который получает данные результата SP).

  • Добавьте в ETL варианты дизайна или требования (производные столбцы, преобразование данных и т. Д.) Между источником и местом назначения.

Команда OLE DB используется для выполнения SQL для каждой проходящей строки, а не для создания потока данных, например, вам нужно выполнение типа строка за строкой.

Возможно ли получить результат оператора вставки? Попробуйте установить NOCOUNT ON.

http://msdn.microsoft.com/en-us/library/aa259204(SQL.80).aspx

Другие вопросы по тегам