在SQL Server 2016代理作业中找不到自定义dll

时间:2019-06-23 19:50:10

标签: sql-server dll ssis sql-server-2016 sql-agent-job

我在SQL Server 2016中有一个sis软件包,它使用的是我在gac中添加的自定义dll。 SSIS包在Visual Studio中可以正常工作,但是当我在SQL Server上部署它时,它找不到dll frm gac。

有人可以帮我在哪里放置该自定义dll吗?

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

  

System.IO.FileNotFoundException:无法加载文件或程序集'abc,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'或其依赖项之一。系统找不到指定的文件。

     

文件名:“ abc,版本= 1.0.0.0,文化=中性,PublicKeyToken =空”

     

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

     

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

     

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

1 个答案:

答案 0 :(得分:0)

有两种可能的原因:

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

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

解决方法

使用AssemblyResolve函数: