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

SSIS中SMTP Script Task自动修改附件路径追加C盘前缀报错咨询

问题原因

这个问题的核心是C#字符串转义规则导致UNC路径被识别为相对路径,触发自动补全盘符:

你代码里写的"\server\sharedfolder\..."属于普通字符串,C#中单个反斜杠\是转义字符,第一个\会被判定为转义标记而非路径的一部分,最终解析出来的路径是没有开头双反斜杠的相对路径。Windows系统处理相对路径时,会默认拼接当前执行进程所在的盘符,你本地运行SSIS的宿主进程在C盘,所以自动加上了C:\前缀。

如果该功能此前正常运行未修改代码就失效,大概率是执行上下文发生了变化:比如此前是在服务器上运行的包,最近你把包拷贝到本地调试,运行环境的路径解析逻辑、权限配置都和服务器不一致。

解决思路

  • 优先修复脚本中路径的写法:C#书写UNC路径需要用逐字字符串避免转义问题,把代码修改为:
    Attachment attach = new Attachment(@"\\server\sharedfolder\ssis\processes\labelprinting\LabelsToPrint.xlsx");
    
    也可以用双反斜杠转义的写法:"\\\\server\\sharedfolder\\ssis\\processes\\labelprinting\\LabelsToPrint.xlsx"
  • 不要硬编码路径,把文件路径配置为SSIS包变量,脚本任务直接读取变量值即可,既可以避免转义问题,也方便不同环境切换路径。
  • 本地运行时确认执行SSIS包的Windows账号有\\server\sharedfolder共享目录的访问权限,避免路径解析正确后仍出现权限报错。
  • 可以在脚本任务中增加路径日志输出,运行时打印实际解析的路径值,方便快速定位路径解析异常问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:27:02