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

Execute stored procedure for each row in the table in SSIS

我想为 table MyTable 中的每一行执行带有特定输入参数的存储过程 MyProc。每行的列将充当 MyProc 的输入值。

如何在 SSIS 中完成此操作?上级让我使用SSIS,在这件事上我别无选择。

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

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

似乎正在为步骤 2.1 中的所有行调用步骤 3.1 中的 DataFlowTask

我想要的是在步骤 3.1 中调用 DataFlowTask 以针对所有记录对步骤 2.1 中的行中的每条记录进行调用。

一旦这个工作,那么我打算 ExecuteSQLTask 里面 ForEachLoopContainer.

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

您要对其执行逐行存储过程的 table 中的 OLEDB 源 SELECT。

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

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