ssis控制流执行sql vs data flow sql命令

时间:2017-02-27 07:18:32

标签: sql-server sql-server-2008 stored-procedures ssis ssis-2008

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

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

2 个答案:

答案 0 :(得分:0)

您也可以对执行SQL任务执行相同操作。

数据流任务中的

OLE DB命令:将始终逐行处理数据

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

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

答案 1 :(得分:0)

如果存储过程创建结果集,则可以使用“执行SQL任务”并将结果集存储在Object类型的变量中,然后循环遍历Script Task内的行。

这些有用的链接可以帮助您将ResultSets存储在变量中并循环遍历Script Task内的行:

如果存储过程未生成任何ResultSet(选择命令),最佳做法是使用执行SQL任务

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

<强>参考文献: