微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在我的帖子中解释的场景中在 SSIS 中一起使用 Transactionoption 和检查点功能?

如何解决如何在我的帖子中解释的场景中在 SSIS 中一起使用 Transactionoption 和检查点功能?

我一直在尝试了解 SSIS 中的检查点功能。对于此实现,我包含以下配置:

  1. 我按照与优先约束相关的顺序执行了 4 个 execute-sql-task:成功;第 3 个 execute-sql-task 将在第一次尝试中失败,因此我将修复错误并重新运行包以观察检查点功能行为

  2. 对于包,transactionoption:Supported,对于每个execute-sql-task,transactionoption:Supported

  3. 在包属性上设置检查点配置如下:

  • CheckPointFileName:文件路径
  • CheckPointUsage:ifExists
  • SaveCheckPoints:真
  1. 为每个 execute-sql-task 设置属性
  • FailPackageonFailure:True

使用此配置,对于第一次运行的包,前 2 个任务在 sqlserver 中的表上更新执行,第 3 个任务失败,第 4 个任务根本没有启动,因为它具有优先约束:成功与它的优先约束任务;检查点文件已创建,我修复了错误并重新运行了包。这一次,只有任务 3 与更新数据库的任务 4 一起执行;这清楚地显示了 Checkpoint 的预期行为。

但是,然后我对 4 个任务中的每一个都对 Transactionoption:required 进行了更改,并将 Transactionoption:Supported 打包;我执行了两次包以观察检查点行为。在这里,我进行了观察 --- 尽管任务 1 和任务 2 在第一次运行中成功,但它们在第二次运行中与任务 3 和任务 4 一起再次执行,并在我的表上进行了更新。我相信,通过 Checkpoint 配置,包必须从失败的任务开始(并执行以下未执行的任务);这没有按预期发生。

嗯,简而言之,我关心的是,这两种情况之间有什么区别,比如说, 场景01----
A) Package Transactionoption:supported -- B) 每个 Execute-sql-tasks Transaction:supported -- C) 检查点:已配置

场景 02 --- A) Package Transactionoption:supported -- B) 每个 Execute-sql-tasks Transaction:required -- C) 检查点:已配置。

有人能帮我理解这个场景吗?感谢您给予的宝贵支持

解决方法

阅读微软Documentation on Checkpoints,有以下注意事项。

在同一个包中使用检查点和事务可能会导致意外结果。例如,当包失败并从检查点重新启动时,包可能会重复已成功提交的事务。

检查点功能还有其他限制,例如不支持 For Each 循环。数据流将完全重新运行,检查点不会捕获数据流中间状态。

Checkpoint 是一个有局限性的好工具;它不是包有状态重启的灵丹妙药。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。