【SSIS】调试在SQL SERVER上部署及运行含有ORACLE连接的SSIS包的过程的一些记录。

浏览: 1617

 以下为草稿…未加工…写之前,我想说,真他喵的不容易!!

最近DW这边增加了ORACLE的数据源,原来以为装个驱动分分钟轻松搞定的事情,没想到还是带来了不小的麻烦。


先交待下系统环境。

  • SSIS开发机:
    • 系统:Windows 7 64bit
    • 开发工具:VS2012 + SSDT 32bit
  • ETL服务器
    • 系统:Windows 2012 R2 64bit
    • SQL Server 2012 64bit


在做开发的时候,给开发机装了一个Oracle Instance Client 11g r2的客户端版本,从PC6网站下的,是某个大神在客户端基础上封装的一个安装版,名称是OraClient Lite-11g。安装完成后,在VS2012里就可以开发及调试了,运行也很成功,如果装的不对,会提示:“未找到oracle 客户端和网络组件,需要安装客户端7.1.2及以上版本”。这时SSIS的驱动选的是Microsoft OLE DB Provider for Oracle,这个选择埋下了一颗雷=。=……在部署的时候也没发现问题,以为这个问题就搞定了。


结果第二天发现,包执行报错,错误为:“所请求的 OLE DB 访问接口 MSDAORA.1 尚未注册 -- 可能是由于没有可用的 64 位访问接口。”然后想起服务器上还没安装Oracle呢……接下来把客户端也给服务器装了一遍,结果发现还是不行,用PL/SQL访问Oracle倒是正常的。看来客户端还是缺了什么东西。接下来就是各种调试…下官方的客户端,装ODAC112040Xcopy_64bit.zip等等等等,都没成功;一开始以为是64位SQL SERVER不能运行32位包的问题,还把运行选项改为了“以32位运行”,仍然不行,这时候我人已经快要崩溃了……这期间下了装,装了调,调完删,反反复复的折磨。后面干脆直接给服务器安装了一个Oracle完整版,最后调试发现,在开发机装了ODTwithODAC_32bit以后,使用Oracle Provider for OLE DB去开发SSIS包,部署运行后的报错提示换了一个,“非有效的win32程序”,赶紧把“32位运行”选项去掉,成功!


最后做一个总结吧,

  • 开发机
    • SSIS中使用驱动Oracle Provider for OLE DB
    • 本机调试时,需将项目的Run64bitRuntime选项选上
    • 安装ODTwithODAC_32bit
  • ETL服务器
    • 安装Oracle完整版本64bit
    • 不要在计划的32位运行的选项上打勾
    • 据说可以使用Express Edition版,可以使用32bit,但是暂时还没尝试过。

感谢http://www.cnblogs.com/sfrost/archive/2015/10/16/4884443.html这个博主,给了我很大启发。

关于驱动的问题,在SSDT for VisualStudio 2013、Sql Server 2014,服务器环境未变,Oracle驱动未变的情况下,换回连接Oracle源的连接方式为官方的“Microsoft OLE DB Provider for Oracle”就没问题,直接部署就可以使用。

推荐 3
本文由 Luis 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册