如何将表作为存储过程参数传递到SSIS数据流中

时间:2012-10-19 21:36:59

标签: c# ssis bids

我正在尝试编写一个SSIS包来将数据从一个数据库传输到另一个数据库(直接复制,我要传入和传出的表具有相同的结构)。我正在选择记录的一个子集(自上次运行包以来已创建或修改的记录)并且我正在尝试将它们转储到目标数据库上的sproc,这将确定需要更新哪些记录和需要插入哪些记录。

如何在数据流对象中执行此操作,或者将记录从对象中传出,以便我可以使用执行SQL任务执行此操作?

我不想使用OLE DB命令,因为它一次只能在一条记录上运行。这两个数据库位于不同位置的不同机器上,我希望这个程序包花费尽可能少的时间来运行,因为我正在编写它来替换运行时间太长的DTS包(它删除了整个目标表的内容,并重新复制所有内容,更改或以其他方式)

1 个答案:

答案 0 :(得分:2)

SSIS不支持表值参数。对于您要实现的目标,有几种解决方法:

  • 有几个第三方UPSERT / MERGE目的地,包括CodePlex上的这个目的地http://ssisctc.codeplex.com/wikipage?title=MERGE%20Destination
  • 您可以使用OLEDB目标将行插入服务器上的临时表,然后从执行SQL任务对临时表运行存储过程。 (这是我们在当前项目中所做的事情)
  • 您可以编写自定义.NET脚本目标
  • 您可以使用查找转换来查看它们是否存在于表中,然后插入不存在的行并对其他行运行OLEDB Command,这至少比针对每行运行它更好