Sql server 在SSIS中为表中的每一行执行存储过程

Sql server 在SSIS中为表中的每一行执行存储过程,sql-server,ssis,etl,Sql Server,Ssis,Etl,我想执行一个存储过程MyProc,为表MyTable中的每一行指定输入参数。每行的列将充当MyProc的输入值 如何在SSIS中实现这一点?上级管理层告诉我使用SSI,我在这件事上没有任何选择 所以。。我已经做了以下工作: 创建包 创建执行SQL任务 已在ExecuteSQLSTASK内创建查询 创建Foreach循环容器 在Foreach循环容器内创建数据流任务 在数据流任务内部,我创建了OLE DB源 已将OLEDBSource连接到派生列 在步骤3.3中的连接中启用DataViewe

我想执行一个存储过程
MyProc
,为表
MyTable
中的每一行指定输入参数。每行的列将充当
MyProc
的输入值

如何在SSIS中实现这一点?上级管理层告诉我使用SSI,我在这件事上没有任何选择

所以。。我已经做了以下工作:

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

    我想要的是在步骤3.1中调用DataFlowTask,以便在步骤2.1中为行中的每个记录而不是所有记录调用

    一旦这样做成功,我打算在
    ForEachLoopContainer
    中执行
    ExecuteSQLTask


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

    OLEDB源从要对其执行逐行存储过程的表中进行选择

    然后是OLE DB命令转换,该转换调用存储过程并将列从数据流传递到存储过程的参数


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

    我被您的问题弄糊涂了。甚至编辑也被回滚。也许,我们重新开始。你想解决的问题是什么?我真的想不出你为什么想要这个。你能解释一下这背后的原因吗。MyProc做什么?billinkc,这是一个非常简单的问题。MyTable返回3行可乐和可乐。我希望使用ColA和ColB的输入参数值执行MyProc 3次。我现在掌握的方法是,ForEachLoopContainer中的DataFlowTask被调用了9次而不是3次。Tab的另一个好答案是删除数据流任务,并用调用存储过程的执行SQL任务替换它。我在dataflow任务中找不到执行SQL转换Tab,你知道吗,如何迭代上述DataFlowTask 200次?基本上,我想做以下200次:1)从表中选择记录2)基于作为输入的select语句执行存储过程。。。我该怎么做?如果您的意思是需要对200条记录执行此操作,则可以修改OLEDB源查询以返回所需的200条记录。如果您需要执行200个不同的选择,那么在这种情况下,您需要将数据流任务放在ForEachLoop容器中,并使用一个变量计数到200。