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

如何在SSIS包中添加条件,仅当附件数量≥2时才触发邮件发送

SSIS 按附件数量控制邮件发送实现方案

你可以通过以下两种低成本的方案实现需求,不需要大幅调整现有包结构:

方案一:直接通过现有变量表达式判断(无需修改代码,新手推荐)

你当前存储附件的User::FileNamesList变量使用|作为分隔符,直接通过计算分隔符数量即可得到附件总数,只需调整任务连接逻辑:

  1. 选中连接Foreach循环容器与发送邮件任务的绿色优先级约束箭头,右键选择「编辑」
  2. 在弹出的编辑器中,「求值运算」项选择表达式
  3. 表达式输入框填写以下内容:
@[User::FileNamesList] != "" && (LEN(@[User::FileNamesList]) - LEN(REPLACE(@[User::FileNamesList], "|", "")) + 1) >= 2

表达式逻辑说明:计算|的数量后加1即为附件总数,同时兼容变量为空的边界场景

  1. 点击「测试表达式」确认语法有效后保存即可。

方案二:新增计数变量控制(逻辑更清晰,便于后续扩展)

如果后续需要对附件数量做更多逻辑判断,可以新增专用计数变量实现:

  1. 在SSIS变量面板新建Int32类型变量User::AttachmentCount,默认值设为0
  2. 修改现有脚本任务,追加附件时同步更新计数,修改后的代码如下:
if (Dts.Variables["User::FileNamesList"].Value.ToString() == "")
{
    Dts.Variables["User::FileNamesList"].Value = Dts.Variables["User::InputPath"].Value.ToString() + Dts.Variables["User::Year"].Value.ToString() +"\\" + Dts.Variables["User::FileName"].Value.ToString();
    Dts.Variables["User::AttachmentCount"].Value = 1;
}
else
{ 
    Dts.Variables["User::FileNamesList"].Value = Dts.Variables["User::FileNamesList"].Value.ToString() + "|" + Dts.Variables["User::InputPath"].Value.ToString() + Dts.Variables["User::Year"].Value.ToString() + "\\" + Dts.Variables["User::FileName"].Value.ToString();
    Dts.Variables["User::AttachmentCount"].Value = (int)Dts.Variables["User::AttachmentCount"].Value + 1;
}

注意:需要在脚本任务的「ReadWriteVariables」配置项中添加User::AttachmentCount,否则脚本无法读写该变量

  1. 编辑Foreach循环与发送邮件任务的优先级约束,求值运算选择表达式,表达式填写:
@[User::AttachmentCount] >= 2

现有包结构参考:
SSIS包结构示意图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:06:07