SSIS:记录集或临时表

SSIS:记录集或临时表,ssis,recordset,Ssis,Recordset,我有一个SSIS应用程序,需要从不同服务器(而不是链接)的2个数据库获取数据。我需要获得2个数据库之间的匹配名称和DOB记录,然后使用结果插入/更新表。 我最初的方法是使用OLEDB源,然后合并联接并将结果放入记录集。然后在controlflow上,使用记录集的结果插入/更新表。但是我在控制流中看不到记录集。 另一种解决方案是创建临时表。但是temp表不可见,因为它们位于每个服务器的tempdb数据库中。 解决此问题的更好方法是什么?您所说的将结果放入记录集是什么意思 如果使用联接将数据流上的两

我有一个SSIS应用程序,需要从不同服务器(而不是链接)的2个数据库获取数据。我需要获得2个数据库之间的匹配名称和DOB记录,然后使用结果插入/更新表。 我最初的方法是使用OLEDB源,然后合并联接并将结果放入记录集。然后在controlflow上,使用记录集的结果插入/更新表。但是我在控制流中看不到记录集。 另一种解决方案是创建临时表。但是temp表不可见,因为它们位于每个服务器的tempdb数据库中。
解决此问题的更好方法是什么?

您所说的
将结果放入记录集是什么意思

如果使用联接将数据流上的两个源联接起来,则联接上的“记录集”仅在当前数据流期间可用。数据流完成后,您不能在控制流上使用它

为什么不能在目标数据库中插入结果集?您可以对同一数据流执行任何其他转换操作,并将结果插入目标数据库


或者,如果在插入数据之前确实需要在控制流上执行某些操作,则可以是,使用OLEDB目标在目标上的临时表上插入记录集,并在另一个数据流上进行访问(虽然不是很好的方法)

在这种情况下,我会为工作表保留一个数据库,或者为这些工作表创建一个模式

接下来,添加一个SQL控制流任务,该任务截断将保存中间结果的表。在此之后,将中间结果集加载到表中,执行该操作,并可以选择再次截断表

对于较小的数据集,记录集目标是合适的。但是,如果您计划将其用于不适合内存的较大数据集,则速度将非常缓慢


如果没有可用作工作区的数据库/模式,可以使用原始文件保存中间结果。这些速度也非常快。

服务器A和服务器B上的数据。一组表是驱动程序,另一组表是参考,还是两组表都需要合并并加载到最终目的地?谢谢您的回答。我使用了一个OLEDB目标,然后创建了另一个包,使用oldDB命令更新其余的表。