|
本帖最后由 通达林河水 于 2016-7-30 15:52 编辑 <br /><br />多次、多渠道反应OA系统报表的Oracle数据源的配置和连接存在的问题,未果。
为说明问题,我用Excel的“数据-获取外部数据”做了如下测试(我的oracle数据库版本11g,数据库ip地址为10.10.10.2,数据库服务名为“oracle”):
1、用“数据-获取外部数据-自其他来源-来自Microsoft Query”,新建数据源,驱动程序选择“Microsoft ODBC for Oracle”,点“连接”,输入用户名和密码,服务器无论输入服务名还是服务器Ip地址,均提示错误。尤其,服务器输入服务器Ip地址时,提示无法获得服务名。
当驱动程序选择Oracle自带的驱动“Oracle in OraClient11g_home1”(此驱动名称随Oracle版本不同而名称不同),输入服务名、用户名和密码,不提示错误,进而出现了选择数据表的下拉框。
结论:"Microsoft ODBC for Oracle"微软的这个ODBC驱动对Oracle支持不好,至少是Oracle817以上版本支持不好(网上很多的使用这个驱动的列子,均低于Oracle817版本)。ODBC驱动应优先使用Oracle自带的ODBC驱动。
2、用“数据-获取外部数据-自其他来源-来自数据连接向导",数据源选“其他/高级”,下一步,数据链接属性,提供程序选“用“Microsoft ole DB Provider for Oracle”,连接:输入服务器名称(此处填Oracle的服务名)、用户名和密码,连接成功,点确定后返回“数据库和表”的选择框。保存数据源后,用记事本打开后,连接关键字如下:<odc:ConnectionString>Provider=MSDAORA.1;Password=11111;User ID=gfms;Data Source=oracle</odc:ConnectionString>
结论:微软的“Microsoft ole DB Provider for Oracle”这个连接方式,支持Oracle。
3、版主提供的Oracle数据源源代码,【odbc_connect("Driver={Microsoft ODBC for Oracle};DSN=$db;SERVER=$server;", $user, $pwd)】使用了"Microsoft ODBC for Oracle"这个驱动,而且还使用了DSN(DSN和ODBC驱动不要求同时提供,网上有很多类似的帖子参考,因权限所限我无法粘贴链接;何况开发人员也无法知道用户是用什么驱动建立的DSN,极易产生冲突)。目前64位的操作系统的ODBC数据源管理器中看不到这个驱动(用上述方法,可以在excel中看到),也就无法直接建立DSN。
Oracle的连接代码,仅使用3个项目,服务名(或DSN名)、用户名和密码,无“数据库”这个概念。数据源窗体的“服务器”和“数据库”我无法知道对应源代码的哪个项目(需在窗体上更加明确的注明填写方法和内容)。
以下是通达技术人员提供的数据源参数设置方法:服务器填服务名,数据库“照写”照哪里写?源代码里的DSN对应的是哪个项目?
版主多次说代码没问题,我多次试验均未成功,到底有没有问题我想必须以结果为准。请提供已连通oracle数据源的客户的参数设置截图,Oracle版本、OA版本等信息以供参考。
我自提出这个问题,已经一周过去了。请务必重视这个问题,急等。 |
|