Axeltherabbit Asked: 2024-07-09 21:51:32 +0800 CST2024-07-09 21:51:32 +0800 CST 2024-07-09 21:51:32 +0800 CST .DTSX 包是否有办法将工作流包装到事务中 772 我有一个 dtsx 包,它将数据从 csv 导入到表中,它会在将数据加载到表中之前截断该表。 问题是,有时由于某种原因,包会失败,因此我最终得到一个空表,我想将工作流包装在某种事务中,并在发生故障时恢复表。 有什么方法可以实现这个吗? sql-server 1 个回答 Voted Best Answer David Browne - Microsoft 2024-07-10T00:01:01+08:002024-07-10T00:01:01+08:00 您可以在此处阅读有关 SSIS 交易的信息。 配置包以使用单个事务 在此选项中,包本身会启动单个事务。通过将包的 TransactionOption 属性设置为“Required”,可以配置包以启动此事务。 接下来,您将在此单个事务中登记特定任务和容器。要将任务或容器登记到事务中,请将该任务或容器的 TransactionOption 属性设置为 Supported。 在 SQL Server Data Tools (SSDT) 中,打开包含要配置为使用事务的包的 Integration Services 项目。 在解决方案资源管理器中,双击该包将其打开。 单击“控制流”选项卡。 右键单击控制流设计图面背景的任意位置,然后单击“属性”。 在“属性”窗口中,将“TransactionOption”属性设置为“Required”。 在“控制流”选项卡的设计图面上,右键单击想要在事务中注册的任务或容器,然后单击“属性”。 在“属性”窗口中,将 TransactionOption 属性设置为 Supported。 注意 若要在事务中登记连接,请在事务中注册使用该连接的任务。有关详细信息,请参阅 Integration Services (SSIS) 连接。 对要加入交易的每个任务和容器重复步骤 6 和 7。 但更好的方法通常是加载临时表,然后在执行 SQL 任务中截断并在事务中加载,例如 begin transaction truncate table foo insert into foo (...) select (...) from foo_stg commit transaction
您可以在此处阅读有关 SSIS 交易的信息。
但更好的方法通常是加载临时表,然后在执行 SQL 任务中截断并在事务中加载,例如