Advertisement

SSIS连接Excel、Oracle 32位64位驱动

阅读量:

概述

本文针对SSIS连接Excel、Oracle等数据源的驱动问题做出解释,并给出一般解决办法。

问题

(1)在VS里开发SSIS包运行正常,在定时调度报错:“由于初始化连接程序时出错……

(2)明明装了oracle客户端,VS就是报找不到驱动程序

SSIS 错误代码 DTS_E_OLEDB_NOPROVIDER_64BIT_ERROR。所请求的 OLE DB 访问接口 MSDAORA.1 尚未注册 -- 可能是由于没有可用的 64 位访问接口。错误代码: 0x00000000。
已获得 OLE DB 记录。源:“Microsoft OLE DB Service Components” Hresult: 0x80040154 说明:“没有注册类”。

这些错误在连接Excel、oracle、informix的过程中都有可能遇到。

原因

关于32位和64位程序

(1)64位的操作系统下可以运行32位、64位的程序,32位操作系统可以运行32位程序,不能运行64位程序。

(2)32位程序需要32位的驱动,64位程序需要64位的驱动。

(3)这里的程序并不包括SSIS包,SSIS包只是个xml文件,并没有32位64位之分(PS:但“脚本任务”是VB或C#等语言编写的,也会被编译)。

常用的软件和驱动

(1)微软的VS环境只有32位的(即使随64位的sqlserver安装的也是32位的VS),32位的VS编辑时会去找32位的驱动,所以如果需要在VS中编辑SSIS包,需要安装32位的驱动。如果你只装了64位的驱动,就会无法编辑程序。但是也许可以运行。

(2)连接Oracle的驱动常见的有两种,一个是微软做的MSDAORA.1,这个驱动程序只有32位的;另一个是oracle做的OraOLEDB.Oracle.1,这个驱动既有32位也有64位,对应着就是oracle32、64位的客户端,这两个客户端是可以共存的。

(3)plsql developer只有32位的,但是通过一定的配置可以使用64位的oralce客户端连接到oracle数据库。

(4)连接informix的驱动也有32、64位,也可以共存。

(5)常见连接excel的驱动有jet4和AccessDatabaseEngine两种,jet4只有32位的;AccessDatabaseEngine 有32位和64位的驱动,但是最坑爹的是他们不能共存。前面介绍说VS只有32位的,所以开发SSIS时必须用AccessDatabaseEngine32位驱动,但是运行时如果是64位的run程序来跑就会报错,就会造成这样的问题“能开发的机器不能运行,能运行的机器不能开发”

解决

(1)连接Oracle的64位SSIS环境安装:

无论开发还是运行环境,先装Oracle的32位驱动,再装64位驱动,注意修改安装位置和开始菜单中的名称便于管理。然后重启机器(经验证明这步很关键)。在VS中使用OraOLEDB.Oracle.1驱动进行连接。

(2)连接Excel的64位SSIS环境安装

开发环境安装AccessDatabaseEngine 32位驱动,运行环境安装64位驱动。在VS中使用AccessDatabaseEngine驱动进行连接。

全部评论 (0)

还没有任何评论哟~