SSIS:记录集或临时表

时间:2012-06-12 04:10:36

标签: ssis recordset

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

2 个答案:

答案 0 :(得分:1)

put the results to recordset是什么意思?

如果使用连接在数据流上连接两个源,则连接上的“记录集”将仅在当前数据流期间可用。在数据流为finisehd之后,您无法在控制流上使用它。

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

或者,如果您确实需要执行只能在插入数据之前在控制流上执行的操作,则可以使用oleDBDestination将记录集插入目标上的临时表,并访问其他数据流(不过,这不是一个很好的方法。

答案 1 :(得分:1)

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

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

记录集目标适用于较小的数据集。但是,如果你计划将它用于不适合内存的较大数据集,那么它将非常慢。

如果您没有可用作工作区的数据库/架构,则可以使用RAW文件来保存中间结果。那些也很快。