使用 SMO 将 SSIS 包升级到 SQL Server 2019

问题描述

我有一个 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 安装到服务器,但我很好奇是否有其他解决方案可以解决此问题。

问题:

  • 有没有办法让 SSIS 包中的脚本任务使用 SMO NuGet?
  • 如果上述“否”,除了将 .dll 安装到服务器之外,是否还有另一种通过 sql 服务器执行 C# 脚本的常用方法

解决方法

您最好将 SMO DLL 安装到目标服务器全局程序集缓存中。 SSIS 仍然不使用本地程序集,您必须引入一些解决方法来解决这个问题。
您可以使用 SMO DLL 进行简单的 MSI 安装 - 例如,请参阅 WIX deploy two assemblies to GACWhat's the 'correct' way of registering/installing an Assembly to the GAC?