VS2017中SSIS配置Oracle连接器报错但ODBC可连如何解决
VS2017 SSIS Oracle连接器连接故障排查方案
按故障出现概率从高到低依次排查:
- 排查位数匹配问题(最高发原因)
VS2017配套的SSDT设计器默认运行在32位上下文,和系统默认打开的64位ODBC管理器、64位Oracle客户端不互通:- 打开32位ODBC管理器(路径为
C:\Windows\SysWOW64\odbcad32.exe),测试32位Oracle驱动下的连接是否正常,不要仅以64位ODBC的测试结果作为驱动正常的依据 - 确认本地同时安装了对应版本的32位Oracle客户端/ODAC驱动,且32位客户端目录下的
tnsnames.ora配置和64位目录下的配置完全一致 - 右键SSIS项目进入「属性-调试」页,切换
Run64BitRuntime选项的布尔值,分别测试32位、64位运行时下的连接状态
- 打开32位ODBC管理器(路径为
- 排查连接器版本与类型匹配问题
- 和可正常连接的同环境用户核对使用的Oracle连接器类型:不要混用微软原生Oracle连接器、Oracle官方ODP.NET连接器、Attunity Oracle连接器三类驱动,优先使用和其他正常用户完全一致的连接器类型
- 核对连接器版本与VS2017 SSDT版本的兼容性,安装对应版本的ODAC驱动时务必勾选「注册到全局程序集缓存(GAC)」选项,未注册到GAC的驱动SSIS设计器无法识别
- 排查环境变量与权限问题
- 检查系统
Path环境变量,确认当前运行上下文对应的Oracle客户端bin目录优先级高于其他Oracle相关路径,避免SSIS加载到错误版本的依赖dll - 确认当前Windows登录用户对Oracle客户端安装目录、
tnsnames.ora所在的network/admin目录有完整读取权限,不要以管理员身份单独启动VS2017,避免权限上下文切换导致读取不到用户级配置
- 检查系统
- 排查连接配置问题
- 优先使用原生Oracle连接类型直接填写连接串配置,不要引用系统ODBC DSN做连接:32位和64位ODBC管理器下创建的同名DSN完全独立,极易出现选到错误DSN的问题
- 如果必须使用ODBC连接,手动在32位ODBC管理器中创建独立的SSIS专用DSN,明确指定驱动版本和tns配置路径后再在SSIS中引用
内容的提问来源于stack exchange,提问作者Marc
相关产品推荐
相关产品推荐

