问题描述
我有一个 SSIS 包,最初是为 sql Server 2015 开发的,它使用 sql Server 管理对象 (SMO) 在 C# 脚本中执行各种操作,现在需要升级到 sql Server 2019。最终,这个包部署到服务器以在 sql 代理作业中运行。
从 sql Server 2017 开始,SMO 被移到 NuGet 包中,不再像以前的版本一样包含在 sql Server 功能包中。
我遇到的问题是集成服务项目并不真正支持 NuGet。如以下链接所述:
SSIS Script Task cant find reference to assembly
如上述票证中所述,我相信我可以在必要时手动将 .dll 安装到服务器,但我很好奇是否有其他解决方案可以解决此问题。
问题:
解决方法
您最好将 SMO DLL 安装到目标服务器全局程序集缓存中。 SSIS 仍然不使用本地程序集,您必须引入一些解决方法来解决这个问题。
您可以使用 SMO DLL 进行简单的 MSI 安装 - 例如,请参阅 WIX deploy two assemblies to GAC 或 What's the 'correct' way of registering/installing an Assembly to the GAC?。