我想使用一个数据流任务,它有两个源,一个来自Access DB,另一个来自SQL Server DB。然后我想操纵数据,最后在我的第二个源的同一个SQL Server上调用存储过程。
所以我不能使用Execute SQL Task
因为我想操纵数据并在最后调用存储过程。
我将使用哪个工具箱组件以及存储过程调用的格式?
我尝试使用类似这样的存储过程来执行OLE DB目标。
Exec sppUpdateAATable1 ?,?
答案 0 :(得分:1)
SSIS使用管道的概念来组织DataFlow任务。数据从源流向目标,并且此数据的处理发生在两者之间。由于您希望将存储过程中的处理结果用作参数,因此无法在管道概念下完成。 SP并不是您数据的真正目的地,因为SP也可以使用它。
您可以填充内存中的Recordset
(目标),并使用ForEach循环容器为记录集的每一行执行SP。
更新
你的包应该是这样的:
数据流任务: OLE DB连接到Access OLE DB连接到SQL Server 要组合2个数据流,请使用UNOIN任务 记录集目标,在您命名为Object(MyRecordsetVar)类型的变量的属性中。它将保存记录集数据。
ForEach循环容器。在属性中选择循环容器类型 - ADO Recorset,在循环属性中指定MyRecordsetVar变量。 分配两个(或根据需要)多个变量来保存记录集的每列中的数据。记录集每行的数据将传递给这些变量。一次一行。
在循环内部放置执行SQL任务。在任务的输入“菜单”中,指定INPUT变量 - 那些包含记录集列数据的变量。我认为你知道该怎么做。
将您的查询作为execute sp_MyProc ?,?
放入任务中。
这应该是它。
答案 1 :(得分:0)
您可以省去记录集目标和foreach循环路径的麻烦,而是在数据流中使用OLE DB Command。它将为流经它的每一行触发存储过程。