как вставить в пункт назначения 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 

person freddoo    schedule 19.03.2009    source источник


Ответы (3)


Возможно, это результат оператора вставки? Попробуйте УСТАНОВИТЬ NOCOUNT ON.

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

person Sam    schedule 24.03.2009

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

person HLGEM    schedule 19.09.2011

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

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

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

person cairnz    schedule 26.04.2012