You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSIS检查点未正确重启,非检查点容器执行异常求助

SSIS检查点行为不符预期的原因分析及误解澄清

问题核心原因

你遇到的问题本质是对SSIS检查点的跟踪逻辑存在误解:

  • SSIS检查点会记录所有成功完成的可执行对象(任务、容器)的状态,只要某个任务/容器在之前的执行中成功结束,重启时就会直接跳过该对象的执行,无论其「Fail Package on Failure」或「Fail Parent on Failure」属性如何设置。
  • 在你的场景中,第一次执行时,Container1内的「查询源目标、更新变量」步骤成功完成,随后表复制步骤失败。由于表复制步骤的「Fail Parent on Failure」设为FALSE,这个失败没有传递给Container1,因此Container1本身仍被标记为「执行中」但内部已完成的任务会被检查点记录。重启后,SSIS会跳过已成功的「查询变量」步骤,直接从失败的表复制步骤继续,导致使用旧变量值引发主键冲突。

关键误解澄清

  1. 检查点的跟踪范围并非仅针对「Fail Package on Failure」的容器
    该属性仅控制对象失败时是否终止整个包,与检查点是否跟踪该对象的成功状态无关。所有可执行对象只要成功完成,都会被检查点记录。

  2. 「Fail Parent on Failure」不影响检查点对单个任务的记录
    这个属性只决定当前任务的失败是否向上传递给父容器,但不会改变检查点对已成功任务的标记逻辑。即使父容器未因子任务失败而失败,已成功的子任务仍会被检查点标记为跳过。

  3. 容器内任务的状态是独立记录的
    容器内的任务是逐个执行并单独记录状态的,后续任务的失败不会回溯修改前面已成功任务的检查点状态。

解决思路

针对你的场景,有两种可行的调整方案:

  • 方案一:让Container1在表复制失败时标记为失败
    将表复制步骤的「Fail Parent on Failure」设为TRUE,这样当表复制失败时,Container1会被标记为失败。此时检查点会记录Container1未完成,重启时会重新执行整个Container1,包括「查询源目标、更新变量」步骤,确保使用最新的变量值执行复制。

  • 方案二:禁用Container1的检查点跟踪
    将Container1的「CheckpointUsage」属性设置为「Never」,这样检查点不会跟踪Container1内部的任何任务状态,每次重启都会完整执行Container1内的所有步骤,无论之前的执行结果如何。

内容的提问来源于stack exchange,提问作者Lee Cascio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 04:25:37