2

在我的 SSIS 工作中,我需要积累一组行,并在处理成功完成后将它们全部提交。如果这是纯 SQL,我会在事务中使用临时表。在 SSIS 中,有许多问题使这一点变得复杂。很难让多个组件共享同一个事务,并且在设计时拥有不存在的临时表是一种痛苦。

如果我为此目的在 SSIS 中使用 Recordsets,则还有其他问题。我的理解是,“执行 SQL”组件在运行时会重新初始化 Recordset,因此我不能使用它来附加额外的行。有没有办法创建引用内存中记录集的 OLE DB 连接?

有没有更好的方法来实现这个结果?

4

1 回答 1

2

有一个更好的办法。正如您所说,您已经尝试/考虑过,我建议您使用临时表。在 SSIS 中使用临时表的关键是: 1. 您需要在连接管理器上将“保留相同的连接”属性设置为 true,否则“智能”连接管理和池最终会丢弃您的连接(并恢复它)没有临时表)在您的包裹中途。2. 您需要使用已经创建的临时表来设计您的包 - 即使您必须将其创建为常规表才能进行设计。当您准备好部署时,更改接触它的组件中的表名称,并将这些任务的 DelayValidation 属性设置为 False。(这将防止包失败,因为最初启动包时该表不存在。)

于 2010-03-23T06:36:47.523 回答