SSIS使用存储过程将DB数据访问SQL

时间:2013-06-23 19:50:30

标签: tsql ssis

我想使用一个数据流任务,它有两个源,一个来自Access DB,另一个来自SQL Server DB。然后我想操纵数据,最后在我的第二个源的同一个SQL Server上调用存储过程。

所以我不能使用Execute SQL Task因为我想操纵数据并在最后调用存储过程。

我将使用哪个工具箱组件以及存储过程调用的格式?

我尝试使用类似这样的存储过程来执行OLE DB目标。

Exec sppUpdateAATable1 ?,?

2 个答案:

答案 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。它将为流经它的每一行触发存储过程。