SSIS 调用第三方库问题解决方式

  • A+
所属分类:.NET技术
摘要

背景:公司要做一个调用Google API 接口的程序,用来上传文件到Google Drive 并分享给其他人。 也已经使用sql server agent 的定时任务处理其他任务,所以要求也要使用相似的技术完成功能。

背景:

公司要做一个调用Google API 接口的程序,用来上传文件到Google Drive 并分享给其他人。 也已经使用sql server agent 的定时任务处理其他任务,所以要求也要使用相似的技术完成功能。

经过:

1、使用Google API对SSIS的组件完成开发

      在我找了一圈之后,在自带的工具中未发现有可以直接使用的组件,但是在搜索之后发现一篇文章https://www.cdata.com/kb/tech/googledrive-ssis-task-export-2008.rst,仔细查看之后,发现是他们提供的付费产品,废弃。

2、创建Script Task,在编辑时生成的项目中用 nuget添加 Google API的包,生成项目

      添加包后编译通过,但是执行时,总是报找不到依赖的项,跟没有被添加引用一样,再次打开项目,添加的包引用丢失。原因是SSIS的Script Task 不支持第三方包引用,个人猜测应该只是包含了代码文件,运行时再编译,不会包含其他依赖文件。

     解决方案: 

     网上有人说可以将依赖的程序集文件放入程序集搜索路径,应该没问题,但是我没有尝试,因为对生产环境影响太大

3、利用反射

    1)创建新的项目,并引用第三方库,编译生成程序集

    2)所有生成的文件放在一个文件夹

    3)在SSIS中添加变量,设置为上一步的文件夹路径

    4)在SSIS 的Script Task 中使用反射调用代码

 

在第3个方案中,完全满足了我们的需求,而且代码可控,如果后面需要新的功能,还可以进行扩展,在此进行记录,为后来者提供参考,减少弯路。