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

SSIS脚本任务未执行首行代码即报错求助

解决方案

1. 确认.NET框架版本兼容

SSIS脚本任务的目标.NET版本必须与WinSCPNet.dll的编译版本一致:

  • 右键SSIS脚本任务 → 编辑脚本 → 在解决方案资源管理器中右键脚本项目 → 属性 → 查看目标框架版本
  • 下载与该版本匹配的WinSCPNet.dll包(WinSCP官网提供.NET 2.0/3.5/4.x等不同版本)

2. 正确部署依赖文件到执行环境

SSIS执行引擎可能无法读取GAC或自定义路径中的dll,建议:

  • 将WinSCPNet.dll和其依赖的WinSCP.exe一起复制到SSIS执行引擎的目录:
    • 32位环境:C:\Program Files (x86)\Microsoft SQL Server\<你的SQL版本>\DTS\Binn
    • 64位环境:C:\Program Files\Microsoft SQL Server\<你的SQL版本>\DTS\Binn
  • 若需自定义路径,可在脚本任务中通过代码手动加载dll:
System.Reflection.Assembly.LoadFrom(@"D:\YourCustomPath\WinSCPNet.dll");

3. 检查执行账户权限

  • SSIS执行时使用的账户(如SQL Server代理账户)需要拥有WinSCPNet.dll所在目录的读取权限
  • 若使用GAC部署,需确保执行账户有权限访问GAC中的dll(默认管理员组有访问权,普通账户需配置对应权限)

4. 捕获真实的内部异常

Target of an invocation是包装异常,无法直接定位问题,需修改代码捕获内部异常:

try
{
    // 你的SFTP业务代码
    var session = new WinSCP.Session();
    // ...其他操作
}
catch (Exception ex)
{
    // 逐层获取内部异常
    while (ex.InnerException != null)
    {
        ex = ex.InnerException;
    }
    // 将真实异常信息抛出或写入日志
    throw new InvalidOperationException("SFTP操作失败:" + ex.Message, ex);
}

通过这种方式可以获取到真正的错误原因,比如依赖缺失、版本不兼容、权限不足等。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 05:24:32