我根据以下文章创建了一个链接服务器定义:
http://www.ideaexcursion.com/2009/01/05/connecting-to-oracle-from-sql-server/
我的目标是将行传输到Oracle 11gR2上的表。
创建链接服务器后,每当我尝试使用如下查询选择表时:
SELECT *
FROM [192.168.1.188]..[ESIPARIS].[T_ERROR_LOG]
我收到以下错误:
Msg 7356, Level 16, State 1, Line 1
The OLE DB provider "OraOLEDB.Oracle" for linked server "192.168.1.188"
supplied inconsistent metadata for a column. The column "EVENT_OBJECT"
(compile-time ordinal 2) of object ""ESIPARIS"."T_ERROR_LOG"" was reported
to have a "LENGTH" of 50 at compile time and 100 at run time.
还有一件事是,只要“Sql Server Management Studio”准备了选择语句,它就会复制字段名称,某些字段重复如下:
SELECT [EVENT_DATE]
,[EVENT_DATE]
,[EVENT_DATE]
,[EVENT_DATE]
,[EVENT_OBJECT]
,[EVENT_OBJECT]
,[EVENT_OBJECT]
,[EVENT_OBJECT]
,[MESSAGE]
,[MESSAGE]
,[MESSAGE]
,[MESSAGE]
,[EVENT_ID]
FROM [192.168.1.188]..[ESIPARIS].[T_ERROR_LOG]
我很高兴收到您的任何想法,感谢您的关注,
最诚挚的问候,
KayhanYÜKSEL
答案 0 :(得分:4)
有许多情况可能会引发此错误:
如果不是驱动程序,则可以使用OPENQUERY。除此以外。 this support note包含有关对链接服务器和Oracle进行故障排除的一般信息。
(这个问题是一个相当普遍的问题,所以事实证明实际的解决方案不是我建议的。我为了完整起见,我将@kayhanyüksel的解决方案纳入了这个响应的主体。)
解决了侦听器和tnsnames的变化。我们现在能够从SQL Server连接到Oracle 11gR2(在64位Red Hat Enterprise Linux 5.4上运行),反之亦然。随后的文件是
- Making a Connection from Oracle to SQL Server
- The Oracle Gateways documentation
答案 1 :(得分:3)
我遇到了同样的问题:列......被报道了 在编译时具有50的“LENGTH”,在运行时具有100的“LENGTH”。选中时重复列名称。 我试图从ORACLE 11g数据库中运行MS SQL中的查询
我使用了follownig类型的查询,它确实有效!
DECLARE @TSQL varchar(8000)
SELECT @TSQL = 'SELECT * FROM OPENQUERY(MyLinkedServer,''SELECT * FROM TableName'')'
EXEC (@TSQL)
其中MyLinkedServer是链接服务器的名称 TableName是表的名称。
在这里,您可以找到帮助我的文章的链接:http://support.microsoft.com/kb/314520
答案 2 :(得分:0)
旧线程,但它可能对某人有用。 当我最近遇到此错误时,使用MS OleDB驱动程序而不是Oracle OleDB提供程序作为提供程序解决了这个问题。
答案 3 :(得分:0)
我在11g客户端遇到了同样的问题但它已经消失了,客户端版本12对我有用,正在使用OPENQUERY
和to_char
来解决问题。
我确认SQL management studio
(无论什么版本)提供了许多重复字段。唯一安装最后一个驱动程序版本我们可以有一致的查询。我希望它对你有用!