ssis 控制流执行 sql vs 数据流 sql 命令

ssis control flow execute sql vs data flow sql command

我有一个存储过程 (sp_selectClient),它有一个游标,它在每次迭代中执行一些插入操作。在 sp 的最后一个语句中,我从 table 中选择了结果。

现在我正在创建一个 ssis 包,我是新手。我找到了最简单的方法,即在控制流中添加数据流任务,然后在数据流中添加一个 source(OLEDB),在其中设置 SQL 命令 'EXEC sp_selectClient'。存储过程不接受任何参数。然后我将它映射到 destination(flat file)。我的问题是我也可以使用 Execute SQL Task 来做到这一点吗?如果是那么这样做的优点和缺点是什么。

你也可以执行SQL任务

数据流任务中的 OLE DB 命令: 将始终逐行处理数据

在控制流中执行SQL任务:将批量处理数据

What is the difference between Execute SQL Task and OLE DB Command

如果您的存储过程创建一个结果集,您可以使用执行 SQL 任务并将结果集存储在类型为 Object 的变量中,然后在 [=11= 中循环行].

这些有用的链接可帮助您将 ResultSets 存储在变量中并在 Script Task:

中循环遍历其行

如果您的存储过程不生成任何结果集(Select 命令),最好使用执行 SQL任务

OLE DB Command 运行 为每一行插入、更新或删除语句,而 Execute SQL Task 在此实例中执行批量插入。这意味着通过您的包的每一行在到达 OLE DB Command.

时都会有一个插入语句 运行

参考文献: