我有一个数据流任务,其中有一个源控件和一个目标控件,我想使用 ado.net 控件将数据从源加载到目标。我想实现如果在加载时发生错误的逻辑从源到目标的数据,那么不应该在目标数据库中加载任何行。如果没有错误,那么它应该加载完整的数据。请建议我如何才能实现这似乎不可能完成的任务。
问问题
39 次
1 回答
0
一种方法是使用事务。在这篇文章中解释得很好: http ://www.mssqltips.com/sqlservertip/1585/how-to-use-transactions-in-sql-server-integration-services-ssis/
但是 SSIS 的分布式事务可以减慢你的包,此外分布式事务协调器服务必须在 Sql Server 上运行。
因此,您可以遵循不同的逻辑:将数据加载到临时表。如果失败,您只需截断表,如果成功,您可以进一步处理。这肯定会更快、更透明,并且您可以在将数据加载到真正的目的地之前,在纯 SQL 中对暂存表中的数据进行一些操作。
于 2013-05-31T08:14:23.383 回答