0

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

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

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

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

4

2 回答 2

2

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

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

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

于 2009-05-28T05:36:56.233 回答
0

我同意 Dane 的观点,SSIS 和 SQL 服务器应该没有问题,只要有适当的基础设施来支持这一点。

于 2009-05-28T05:46:18.543 回答