日期:2014-05-18  浏览次数:20507 次

sql链接到oracle的问题
两个服务器,都链接到一台oracle服务器去取数据。配置一模一样。
tns如下
LISDB =
  (DESCRIPTION =
  (ADDRESS_LIST =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.14)(PORT = 1521))
  )
  (CONNECT_DATA =
  (SERVICE_NAME = lisdb)
  )
  )

然后我在sql2005设置如下。
链接服务器TEST
访问接口microsoft oledb for oracle
产品名称Oracle
数据源LISDB

然后安全性里面 使用此安全上下文连接
用户名:aa
密码:aa

同样的配置,我其中一台服务器,连接没有问题,查询也可以 。
但是另外一台服务器 报无法初始化 ole db访问接口的msdaora的数据源对象 连接未打开 错误号ora06413

感觉很莫名。另外要说的是,那台无法连接的服务器,就算用dts去访问oracle,也会报连接未打开 错误号ora06413
服务器操作系统不同,有问题的那个是windows server2003 r2 64位的,没问题的是我的xp机器。

大家谁有类似的经验吗?

------解决方案--------------------
有问题的那个是windows server2003 r2 64位的?

这个?64位的就难说了。

如果你还有机器的话,弄个windows server2003 sp1(sp2) 32位的再试试,如果能行,不就能说明问题了?
------解决方案--------------------
http://blog.csdn.net/zhpsam109/archive/2006/03/08/618860.aspx
------解决方案--------------------
另外,你的oracle是什么版本?至少9i对64位的机器是不感冒的。10g以上不知道,帮顶。
------解决方案--------------------
windows server2003 r2 64 上 oracle 客户端是否是 64 位的?

使用 oracle 提供的 ole db 接口(oraoledb.oracle)是否可以?


------解决方案--------------------
试试看:
首先,SQL Server 2005从Linked-Server链接到Oracle 10g, 你要先确定Oracle 10g安装配置正确,并且能在DOS模式下执行tnsping LISDB 能够通过没有错误;注意Oracle的数据库名称,密码,服务名称都是要分大小写的;
其次,你可以任选下列一种Provider去连接Oracle数据库:
1.OraOLEDB.Oracle(Oracle Provider for OLE DB)(要确认Oracle ODAC 10g安装并配置正确)
2. MSDAORA(Microsoft OLE DB Provider for Oracle)
另外,点击Linked-Servers\Providers\MSDAORA, 右键点击Properties属性,确认Allow inprocess
第三,建立好正确的Linked-Server右键点击Test connection如果显示成功应该就可以连上Oracle数据库啦!
------解决方案--------------------
又及,以上三个步骤任何一个的成功都缺一不可,Net配置最好删除重建。