2

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

4

2 回答 2

1

你是什​​么意思put the results to recordset

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

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

或者,如果你真的需要在插入数据之前做一些只能在控制流上完成的事情,你可以是的,使用 oleDBDestination 将记录集插入到目标上的临时表上,然后访问另一个数据流(不是非常好方法,不过)

于 2012-06-12T19:25:50.240 回答
1

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

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

记录集目的地适用于较小的数据集。但是,如果您打算将它用于不适合内存的较大数据集,它将非常慢。

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

于 2012-06-14T23:34:44.553 回答