关于SQL SERVER 链接服务器

时间:2021-07-26 07:27:34
我在企业管理器中建了一个SQL SERVER 链接服务器
链接服务器:ORA
链接服务器类型:其他数据源
提供程序名称:Oracle Provider for OLE DB
数据源:(ORACLE服务名)
安全性:选择“用此安全上下文进行”
        并填写了  远程登录“XXXX”
                  使用密码“XXXX”

建好后,在链接服务器下的表中可以查看到链接的表和视图。
但通过查询分析器执行
select *  from ORA..USER.TABLE   (USER 为ORACLE用户名、TABLE为表名)
时报错
OLE DB 提供程序 'OraOLEDB.Oracle' 返回了无效的架构定义。
OLE DB 错误跟踪[Non-interface error:  OLE/DB provider returned an invalid schema definition.]。
不知是什么原因,请各位大侠多多指教,谢谢。

12 个解决方案

#1


顶~~~~~~~~~~~~~~~~~

#2


使用 OPENQUERY 方式查询链接服务器上的数据:

SELECT * FROM OPENQUERY(ORA, 'SELECT * FROM USER.TABLE') 

#3


这个给你看看

http://www.oracle123.com/hgkjh/mrspqtymzm/183635.htm

#4


你寫的鏈接語句 是什麼寫的?有可能你的鏈接語句寫得不成功?

參考:
--創建鏈結伺服器
exec sp_addlinkedserver  'server_lnk','','SQLOLEDB','遠端伺服器名或ip位址'
exec sp_addlinkedsrvlogin ' server _lnk','false',null,'用戶名','密碼'

#5


1. 企业管理器中,展开链接服务器,查看表右边的详细信息窗口,看看是否有表列出来.
   如果没有,则是配置错误. 检查你的配置

2. 如果有表列出来,则试试使用下面的方法能否访问:
  select *  from openquery(ORA,'select * from USER.TABLE ')

#6


尝试以下两个方式
SELECT a.*
FROM OPENROWSET('MSDAORA',
'TEST';'SCOTT';'TIGER', SCOTT.BONUS) AS a ORDER BY a.ID

SELECT *
FROM OPENDATASOURCE(
'MSDAORA',
'Data Source=TEST;User ID=SCOTT;Password=TIGER')..SCOTT.BONUS

结果都是:
OLE DB 提供程序 'MSDAORA' 报错。 
[OLE/DB provider returned message: 发生了一个 Oracle 错误,但无法从 Oracle 中检索错误信息。]
OLE DB 错误跟踪[OLE/DB Provider 'MSDAORA' IDBInitialize::Initialize returned 0x80004005:   ]。

尝试
select *  from openquery(ORA,'select * from SCOTT.BONUS')
结果为:
未能对 OLE DB 提供程序 'OraOLEDB.Oracle' 执行查询。
OLE DB 错误跟踪[OLE/DB Provider 'OraOLEDB.Oracle' ICommandText::Execute returned 0x80040155]。

尝试
select *  from ORA..SCOTT.BONUS 
结果为:
OLE DB 提供程序 'OraOLEDB.Oracle' 为列提供的元数据不一致。执行时更改了元数据信息。
OLE DB 错误跟踪[Non-interface error:  Column 'ENAME' (compile-time ordinal 1) of object '"SCOTT"."BONUS"' was reported to have a DBTYPE of 129 at compile time and 130 at run time]。

大虾们快帮帮我,谢谢。


#7


应该是你的链接语句有问题

#8


我在别人的电脑上试了一下,有的没问题,有的和我的情况一样。怀疑是SQL SERVER的数据库驱动的问题,可能和MDAC有关,正在研究中…………  
在此先谢谢各位大侠了。

#9


楼主的机器上安装ORACLE客户端了没?

#10


哥们,搞定了??

#11


我敢肯定的说,ORACLE客户端装了。

不过,还没有完全搞定呢,还是有的机器上行,有的不行。

#12


我也碰到这样的问题,急着等着解决呢,楼上的XD啊,搞定了没有呢!!

#1


顶~~~~~~~~~~~~~~~~~

#2


使用 OPENQUERY 方式查询链接服务器上的数据:

SELECT * FROM OPENQUERY(ORA, 'SELECT * FROM USER.TABLE') 

#3


这个给你看看

http://www.oracle123.com/hgkjh/mrspqtymzm/183635.htm

#4


你寫的鏈接語句 是什麼寫的?有可能你的鏈接語句寫得不成功?

參考:
--創建鏈結伺服器
exec sp_addlinkedserver  'server_lnk','','SQLOLEDB','遠端伺服器名或ip位址'
exec sp_addlinkedsrvlogin ' server _lnk','false',null,'用戶名','密碼'

#5


1. 企业管理器中,展开链接服务器,查看表右边的详细信息窗口,看看是否有表列出来.
   如果没有,则是配置错误. 检查你的配置

2. 如果有表列出来,则试试使用下面的方法能否访问:
  select *  from openquery(ORA,'select * from USER.TABLE ')

#6


尝试以下两个方式
SELECT a.*
FROM OPENROWSET('MSDAORA',
'TEST';'SCOTT';'TIGER', SCOTT.BONUS) AS a ORDER BY a.ID

SELECT *
FROM OPENDATASOURCE(
'MSDAORA',
'Data Source=TEST;User ID=SCOTT;Password=TIGER')..SCOTT.BONUS

结果都是:
OLE DB 提供程序 'MSDAORA' 报错。 
[OLE/DB provider returned message: 发生了一个 Oracle 错误,但无法从 Oracle 中检索错误信息。]
OLE DB 错误跟踪[OLE/DB Provider 'MSDAORA' IDBInitialize::Initialize returned 0x80004005:   ]。

尝试
select *  from openquery(ORA,'select * from SCOTT.BONUS')
结果为:
未能对 OLE DB 提供程序 'OraOLEDB.Oracle' 执行查询。
OLE DB 错误跟踪[OLE/DB Provider 'OraOLEDB.Oracle' ICommandText::Execute returned 0x80040155]。

尝试
select *  from ORA..SCOTT.BONUS 
结果为:
OLE DB 提供程序 'OraOLEDB.Oracle' 为列提供的元数据不一致。执行时更改了元数据信息。
OLE DB 错误跟踪[Non-interface error:  Column 'ENAME' (compile-time ordinal 1) of object '"SCOTT"."BONUS"' was reported to have a DBTYPE of 129 at compile time and 130 at run time]。

大虾们快帮帮我,谢谢。


#7


应该是你的链接语句有问题

#8


我在别人的电脑上试了一下,有的没问题,有的和我的情况一样。怀疑是SQL SERVER的数据库驱动的问题,可能和MDAC有关,正在研究中…………  
在此先谢谢各位大侠了。

#9


楼主的机器上安装ORACLE客户端了没?

#10


哥们,搞定了??

#11


我敢肯定的说,ORACLE客户端装了。

不过,还没有完全搞定呢,还是有的机器上行,有的不行。

#12


我也碰到这样的问题,急着等着解决呢,楼上的XD啊,搞定了没有呢!!