链接服务器: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')
SELECT * FROM OPENQUERY(ORA, 'SELECT * FROM USER.TABLE')
#3
这个给你看看
http://www.oracle123.com/hgkjh/mrspqtymzm/183635.htm
http://www.oracle123.com/hgkjh/mrspqtymzm/183635.htm
#4
你寫的鏈接語句 是什麼寫的?有可能你的鏈接語句寫得不成功?
參考:
--創建鏈結伺服器
exec sp_addlinkedserver 'server_lnk','','SQLOLEDB','遠端伺服器名或ip位址'
exec sp_addlinkedsrvlogin ' server _lnk','false',null,'用戶名','密碼'
參考:
--創建鏈結伺服器
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 ')
如果没有,则是配置错误. 检查你的配置
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]。
大虾们快帮帮我,谢谢。
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')
SELECT * FROM OPENQUERY(ORA, 'SELECT * FROM USER.TABLE')
#3
这个给你看看
http://www.oracle123.com/hgkjh/mrspqtymzm/183635.htm
http://www.oracle123.com/hgkjh/mrspqtymzm/183635.htm
#4
你寫的鏈接語句 是什麼寫的?有可能你的鏈接語句寫得不成功?
參考:
--創建鏈結伺服器
exec sp_addlinkedserver 'server_lnk','','SQLOLEDB','遠端伺服器名或ip位址'
exec sp_addlinkedsrvlogin ' server _lnk','false',null,'用戶名','密碼'
參考:
--創建鏈結伺服器
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 ')
如果没有,则是配置错误. 检查你的配置
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]。
大虾们快帮帮我,谢谢。
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啊,搞定了没有呢!!