具有嵌入dll的SSIS包



我设计了一个应用程序,有人可以将其安装在个人工作站上,并能够自动生成SSIS包。此SSIS包现在应该包括一个脚本任务。

这个脚本任务必须引用一个DLL文件,其中包含我们需要使用的已经开发的代码。因此,为了实现这一目标,我看到并尝试了两种可能的解决方案:

  • 将DLL注册到GAG中,并在脚本任务项目中引用DDL
  • 将DLL放入静态路径中,并在脚本任务项目中引用DDL

但我正在寻找一个更优雅的解决方案,比如将DLL引用嵌入SSIS包定义中。因此,每个人都可以部署此SSIS包。

如果可能的话,这种方法将具有许多优点:

  • 无需检查引用路径\file.dll的存在
  • 无需检查DLL版本与脚本任务内代码之间的兼容性
  • 不存在读取文件权限问题

经过大量研究,我得出结论,在DTSX定义中嵌入DLL是不可能的,有什么想法吗?

SSIS包是由SSIS引擎执行的XML代码。它不是数据、资源等的通用容器。SSIS项目也不是这样的容器,它只是具有预定义扩展名和内容的XML文件的ZIP存档。因此,在SSIS基础结构中,您没有放置DLL的位置
从故事的另一端来看,SSIS脚本任务由SSIS引擎执行,它需要定位(也称为解析(并加载特定的DLL。它可以从这些地方做到这一点:

  • DLL引用中指定的文件路径
  • SSIS引擎二进制文件所在的文件夹
  • GAC

同样,此列表中没有SSIS基础结构
在您的特定场景中,我建议将DLL包含在上述安装程序中,并将其安装到GAC。它很容易实现,而且是Windows操作系统的原生版本。

最新更新