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

SQL Server作业中Newtonsoft.Json包加载失败问题求助

解决SSIS脚本在SQL Server代理中无法加载Newtonsoft.Json的流程

1. 确认SQL Server代理账户权限与DLL路径

  • 打开服务器「服务」,找到SQL Server Agent,查看其登录身份(通常是NT SERVICE\SQLSERVERAGENT或自定义域账户)。
  • 确保该账户对Newtonsoft.Json.dll所在文件夹拥有读取权限,推荐将DLL放在以下对应路径:
    • 32位运行时:C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn(SQL Server 2019对应版本号150)
    • 64位运行时:C:\Program Files\Microsoft SQL Server\150\DTS\Binn
  • 注意:SSIS作业如果勾选了「使用32位运行时」,必须对应放置32位的DLL,反之亦然。

2. 配置VS中脚本项目的NuGet包与复制属性

  • 打开VS中的SSIS脚本任务,右键脚本项目 → 「管理NuGet程序包」,安装兼容.NET 4.7的稳定版Newtonsoft.Json(推荐12.0.3或13.0.1版本,避免过新的预览版)。
  • 在脚本项目的引用中选中Newtonsoft.Json.dll,右键 → 「属性」,设置复制本地为True,确保编译后DLL会随SSIS包一起打包。
  • 检查脚本代码中的引用,避免强绑定版本号,直接使用:
    using Newtonsoft.Json;
    

3. 添加程序集绑定重定向(解决版本冲突)

  • 在脚本任务的项目中找到app.config(无则新建),添加以下配置,强制SSIS使用指定版本的Newtonsoft.Json:
    <configuration>
      <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
            <!-- 替换newVersion为你实际使用的版本号 -->
            <bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
          </dependentAssembly>
        </assemblyBinding>
      </runtime>
    </configuration>
    
    注:publicKeyToken为Newtonsoft.Json的固定值,无需修改。

4. 验证SSIS运行时环境配置

  • 若使用项目部署模式:在SSMS中连接到Integration Services,检查SSIS目录的运行时配置,确保.NET框架版本为4.7,无冲突程序集。
  • 若使用包部署模式:在SQL Server代理的作业步骤中,进入「执行SSIS包」的配置,确认「使用32位运行时」的勾选状态与你放置的DLL位数一致。

5. 手动测试与日志排查

  • 用SQL Server代理的运行账户登录到服务器,手动双击运行SSIS包(.dtsx文件),验证是否能正常执行,以此排除账户权限或路径问题。
  • 查看SQL Server代理的作业历史日志,获取详细的异常堆栈信息(日志中会显示具体的加载失败原因,比如版本不匹配、路径找不到),进一步定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 02:15:25