2014-12-04 81 views
0

从SQL Server查询链接Oracle数据库服务器时遇到问题。我查询在Oracle中的视图和视图包含在WHERE子句中的功能:从Oracle客户端运行时链接服务器到Oracle数据库产生错误结果

WHERE someColumn = someFunction(anotherColumn) 

查询返回的行数正确。从SQL服务器执行时,返回的结果很多。通过检查查询,我发现WHERE子句中的函数没有得到应用。这是我所能说的,因为我无法访问Oracle BOX。我正在使用OLE DB Oracle提供程序。

有什么可能导致这个问题?

+0

您在链接服务器定义中使用OPENQUERY语法吗?我认为这是查询按原样传递给链接数据库的选项(在这种情况下,该函数应该在/由oracle执行时运行)。另一个选项(我忘记了语法)试图解析SQL,其中该函数可能被忽略。 – davek 2014-12-04 14:54:18

+0

@davek我没有使用'OPENQUERY',我的查询看起来像'SELECT COUNT(*)FROM LinkedServer..Scheme.View',但我试图从'OPENQUERY'发出同样的查询,结果如下SELECT * FROM OPENQUERY(LinkedServer,SELECT COUNT(*)FROM View) – Dimt 2014-12-04 14:56:51

+0

想到的唯一一件事就是追踪实际到达Oracle的内容(例如使用TKPROF),以查看函数是否以某种方式在途中被剥离出来。 – davek 2014-12-04 15:42:37

回答

0

原来,问题是由于Oracle提供商OLE DB的。当我将供应商更改为时,Microsoft OLE DB Provider for Oracle工作正常。我花了一段时间才发现问题不大,谷歌也不会给出任何提示。

相关问题