【问题标题】:SSIS Transactions - Large Record SetsSSIS 事务 - 大型记录集
【发布时间】:2009-05-28 13:46:18
【问题描述】:

我想知道 SSIS 如何处理大型数据集的事务。我有一个大约 150,000 行的“大型”数据集,作为从临时数据库到实时数据库的 ETL 的一部分,每一行都需要根据业务规则进行验证。

如果任何记录不符合其业务规则,则任何记录都不应出现在实时数据库中(即回滚事务)。

我的问题是 SSIS 如何处理大型事务 - 或者可以吗?如果最后一条记录不符合其业务规则,它会处理输入 149,999 条记录然后回滚整个记录吗?或者是否有更好的最佳实践来执行这种类型的大数据传输操作?

我目前的想法是在控制流级别处理序列容器中的每条记录,并在容器上启用事务设置。所有的验证都会在序列容器中完成,插入也会在这个容器中完成。

【问题讨论】:

    标签: ssis transactions etl


    【解决方案1】:

    SSIS 可以很好地处理事务。它失败的地方是使用 MSDTC 对多个数据库或服务器进行事务处理(仍然有效,但有一些警告)。

    您可以将数据流任务上的 TransactionOption 设置为必需。这将强制 SSIS 将其注册到事务中。同样,您可以将其他任务的 TransactionOption 设置为 NotSupported(例如,如果失败则更新状态表失败)。

    您实际上无法处理序列容器中的每条记录(除非您多次循环数据流任务,这可能不是最好的方法)。相反,我会将数据流置于所需的事务选项中,然后如果您的数据流中有任何记录失败并回滚整个事务,它应该会导致任务失败。

    【讨论】:

      【解决方案2】:

      我同意 Dane 的观点,只要有适当的基础架构支持,SSIS 和 SQL Server 应该不会有这么多事务的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-31
        • 1970-01-01
        • 2011-02-05
        • 2013-03-06
        相关资源
        最近更新 更多