对SSIS中表中的每一行执行存储过程

时间:2015-04-08 16:26:53

标签: sql-server ssis etl

我想为表MyProc中的每一行执行一个存储过程MyTable,其中包含某些输入参数。每行的列将作为MyProc的输入值。

如何在SSIS中完成此操作?高层管理人员告诉我使用SSIS,我在这件事上没有任何选择。

所以......我做了以下事情:

  1. 创建包
  2. 创建执行SQL任务
    • 在ExecuteSQLTask
    • 中创建查询
  3. 创建Foreach循环容器
    • 在Foreach循环容器中创建数据流任务。
    • 内部数据流任务我创建了OLE DB源
    • 将OLEDBSource连接到派生列
    • 在步骤3.3中启用DataViewer连接
  4. 看起来在步骤2.1中为所有行调用了步骤3.1中的DataFlowTask

    我想要的是在步骤3.1中调用DataFlowTask来为步骤2.1中的每行记录调用AS OPPOSED TO所有记录。

    一旦有效,我打算ExecuteSQLTask内的ForEachLoopContainer

    enter image description here

1 个答案:

答案 0 :(得分:7)

您只需要一个带有OLEDB源和OLE DB命令转换的数据流任务。

OLEDB源SELECT从您要在其上执行逐行存储过程的表中进行选择。

然后是OLE DB命令转换,它调用存储过程并将数据流中的列传递给存储过程的参数。

这将导致存储过程对表的每一行执行一次。您不需要初始执行SQL,也不需要For-Each循环。