2009-03-19 8 views
0

Я пытаюсь вставить в OLE DB назначения результат в зр для каждой записи в качестве источника дб оле,, как вставить в OLEDB назначения из команды OLEDB

СП возвращает рекорд

Я нашел это how to call a stored procedure in SSIS

, но я до сих пор не может видеть столбцы outpout в выходные столбцы OleDb Command

вот мой зр:

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 

ответ

0

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

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

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

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