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