Sql server 在SQL Server 2016代理作业中找不到自定义DLL

Sql server 在SQL Server 2016代理作业中找不到自定义DLL,sql-server,dll,ssis,sql-server-2016,sql-agent-job,Sql Server,Dll,Ssis,Sql Server 2016,Sql Agent Job,我在SQL Server 2016中有一个ssis包,它使用我在gac中添加的自定义dll。SSIS包在visual studio中运行良好,但当我将其部署到SQL Server上时,它找不到dll frm gac 有人能帮我把自定义dll放在哪里吗 我在任务脚本中添加了异常处理,并将日志保存在一个文本文件中,其中 System.IO.FileNotFoundException:无法加载文件或程序集“abc,版本=1.0.0.0,区域性=中性,PublicKeyToken=null”或其依赖项之

我在SQL Server 2016中有一个ssis包,它使用我在gac中添加的自定义dll。SSIS包在visual studio中运行良好,但当我将其部署到SQL Server上时,它找不到dll frm gac

有人能帮我把自定义dll放在哪里吗

我在任务脚本中添加了异常处理,并将日志保存在一个文本文件中,其中

System.IO.FileNotFoundException:无法加载文件或程序集“abc,版本=1.0.0.0,区域性=中性,PublicKeyToken=null”或其依赖项之一。系统找不到指定的文件

文件名:“abc,版本=1.0.0.0,区域性=中性,PublicKeyToken=null”

在ST_7a052dcdad9e4fe18bb49852****.Job.runTask()
在ST_7a052dcdad9e4fe18bb49852****.ScriptMain.Main()

警告:程序集绑定日志记录已关闭。
要启用程序集绑定失败日志记录,请将注册表值[HKLM\Software\Microsoft\Fusion!EnableLog](DWORD)设置为1

注意:程序集绑定失败日志记录会带来一些性能损失。要关闭此功能,请删除注册表值[HKLM\Software\Microsoft\Fusion!EnableLog]


有两种可能的原因:

  • 32/64位冲突:确保运行的模式与dll版本相关。尝试在SQL作业中以32位模式运行包:

  • 将注册的dll复制到SQL程序集路径:
    %ProgramFiles%\Microsoft SQL Server\\SDK\Assembly
    ,然后将其注册到GAC。还要确保这是包中引用的路径

  • 解决方法

    使用AssemblyResolve函数:


    您是否也将DLL部署到生产服务器上的GAC?是的,我使用了gacutilHave u尝试用Cmd列出所有GAC文件?它不起作用,因此最后我不得不在任务脚本中调用可执行文件,而不是使用DLL。