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

SSIS包部署后作业执行成功但未发邮件,代理账户配置咨询

核心原因定位

首先你的脚本存在异常吞噬问题:catch块中没有任何错误日志/抛出逻辑,即使邮件发送失败,任务也会强制返回Success状态,这就是你看到执行成功但收不到邮件的直接原因。你需要先修改代码暴露真实错误:
把catch块修改为:

catch (Exception ex)
{
    // 抛出错误到SSIS日志,方便排查
    Dts.Events.FireError(0, "SendMailTask", ex.Message + "\r" + ex.StackTrace, string.Empty, 0);
    Dts.TaskResult = (int)ScriptResults.Failure;
    return;
}

同时在SmtpClient初始化后添加TLS1.2配置(Office365已强制要求TLS1.2,低版本.NET环境默认未启用):

SmtpClient SmtpServer = new SmtpClient(SMTPServerName);
// 新增TLS配置
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;

代理账户配置校验

你遇到的问题大概率和代理/执行身份权限有关,按以下步骤检查配置:

1. 不同执行场景的身份差异

  • 直接在SSIS Catalog中手动执行包:默认使用SQL Server数据库引擎服务账户运行,不是你配置的代理账户
  • SQL Server作业中执行SSIS包:才会使用你配置的代理账户运行
    所以两种场景都要检查对应身份的权限。

2. 代理账户正确配置步骤

  • 凭据配置:确保凭据对应的Windows账户密码正确、未过期、未被锁定,该账户有权限访问外部网络(访问Office365 SMTP服务的587端口)
  • 子系统权限:代理账户必须勾选「SQL Server Integration Services 包执行」子系统权限
  • SSIS权限:代理账户(以及手动执行用的SQL服务账户)需要对SSIS Catalog中对应项目/包有读取、执行权限,同时有权限读取项目的敏感参数(SenderPassword是敏感参数)

其他必查项

  • 部署后项目参数校验:确认SSIS Catalog中项目的Sender、SenderPassword、ToMail、SMTPServerName、Port参数值和本地测试用的参数完全一致,敏感参数SenderPassword部署时已正确填写
  • 服务器网络校验:确认SQL Server所在服务器的防火墙已开放出站587端口,没有拦截访问Office365 SMTP服务的请求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:06:02