SSIS在哪里查找自定义dll?

huangapple go评论49阅读模式
英文:

Migrating Servers - Where does SSIS look for Custom dll's?

问题

我们正在将服务器从MS Windows Server 2012升级到2019,创建新服务器并迁移应用程序,而不是进行现场升级。

SQL Server实例正在升级到SQL Server 2019。

我正在迁移引用了一些自定义DLL的SSIS包到新服务器。

在源服务器上,dll位于C:\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn

在新服务器上,我已将它们复制到C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn,但仍然出现错误。

我还尝试将它们放在C:\Program Files (x86)\Microsoft SQL Server\150\DTS\PipelineComponents,但仍然出现错误。

我从数据库中导出了SSIS项目,在我的笔记本电脑上用MSVS打开它,编译它,一切似乎都很好。

主要错误似乎是

  • "Script Component - ResultSet" failed validation and returned validation status "VS_ISBROKEN"
  • The binary code for the script is not found. Please open the script in the designer by clicking Edit Script button and make sure it builds successfully.

我的初始重点是确保SSIS包能找到这些dll。

  • 我把它们复制到了正确的目录吗?
  • 简单地将dll复制到目录中就足够了吗?
  • 如何证明SSIS正在使用这些dll?

任何建议都将不胜感激。

先行致谢。

英文:

We are upgrading servers from MS Windows Server 2012 to 2019, creating new servers and migrating applications as opposed to doing an insitu upgrade

SQL Server instances are being upgraded to SQL Server 2019 in the process.

I am migrating SSIS packages which reference some custom DLL's, to a new server.

In the source server the dll's were in C:\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn

On the new server I have copied them to C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn however I am seeing errors.

I have also tried them in C:\Program Files (x86)\Microsoft SQL Server\150\DTS\PipelineComponents but am still seeing errors.

I exported the SSIS project from the db, opened it up in MSVS on my laptop, compiled it and all seemed fine.

The main error appears to be

  • "Script Component - ResultSet" failed validation and returned validation status "VS_ISBROKEN"
  • The binary code for the script is not found. Please open the script in the designer by clicking Edit Script button and make sure it builds successfully.

My initial focus is to check that the SSIS packages are finding the dll's.

  • Am I copying them to the right directories?
  • Is simply copying the dll's to the directory enough?
  • How can I prove that SSIS is picking up these dll's?

Any advice will be gratefully received.

Thanks in advance.

答案1

得分: 1

你需要在全局程序集缓存(Global Assembly Cache,GAC)中安装自定义程序集:

gacutil -if MyAssembly.dll

我认为你可能还需要创建新版本的自定义程序集,以便与新的SQL Server接口进行绑定。

英文:

While I've not done a recent migration, you'll also need to have custom assemblies installed to the Global Assembly Cache, GAC.

gacutil -if MyAssembly.dll

The other thing I think might need to do is create a new version of your custom assemblies that bind to the new SQL Server interface.

答案2

得分: 0

我已经找出了问题。

首先,包中有许多脚本模块,我已经重新编译了所有模块,除了一个,所以这是我的错。

其次,在从Windows Server 2012迁移到2019时,相关的目录不再位于C:\Program Files,而是位于C:\Program Files (x86)

一旦我将dll文件放置在C:\Program Files\Microsoft SQL Server\150\DTS\Binn中,包就可以正常运行,没有错误。

感谢那些回应的人。

英文:

I've managed to work out the problem.

Firstly there were a number of script modules in the package and I had recompiled all but one, so that was a 'my bad'.

Secondly, in moving from Windows Server 2012 to 2019, the relevant directory is no longer in C:\Program Files. It is now in C:\Program Files (x86).

Once I had placed the dll's in C:\Program Files\Microsoft SQL Server\150\DTS\Binn the package ran without error.

My thanks to those who responded.

huangapple
  • 本文由 发表于 2023年6月5日 18:38:27
  • 转载请务必保留本文链接:https://go.coder-hub.com/76405607.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定