You need to enable JavaScript to run this app. Sequence容器Propagate设为false时,如何将SSIS包最终状态设为失败
优惠活动
大模型
产品
解决方案
定价
更多

Sequence容器Propagate设为false时,如何将SSIS包最终状态设为失败

实现方案

步骤1:新增包级错误标记变量

打开SSIS包的变量面板,创建包作用域的布尔型变量,命名为HasFileProcessError,初始值设置为False。

步骤2:修改Sequence Container的On Error事件逻辑

保留原有邮件发送逻辑,在事件处理流程末尾新增赋值操作:

  • 若使用SSIS 2012及以上版本,添加表达式任务,设置表达式为:
    @[User::HasFileProcessError] = True
  • 若使用更低版本SSIS,替换为脚本任务:
    • 在脚本任务的读写变量列表中添加User::HasFileProcessError
    • 脚本核心逻辑:
      Dts.Variables["User::HasFileProcessError"].Value = true;
      Dts.TaskResult = (int)ScriptResults.Success;
      

步骤3:For Each Loop执行完成后新增状态校验

在For Each Loop容器下游添加校验脚本任务,连接优先级设置为「成功」,确保所有文件处理完成后才执行校验:

  • 脚本任务的只读变量列表添加User::HasFileProcessError
  • 脚本核心逻辑:
    if ((bool)Dts.Variables["User::HasFileProcessError"].Value)
    {
        // 主动抛出错误,将包最终状态标记为失败
        Dts.Events.FireError(0, "全局错误校验", "存在至少1个文件处理失败", "", 0);
        Dts.TaskResult = (int)ScriptResults.Failure;
    }
    else
    {
        Dts.TaskResult = (int)ScriptResults.Success;
    }
    

注意:原有Propagate = False的配置无需修改,单文件出错后继续处理下一个文件的逻辑不受影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 17:09:02