链接服务器无法从Oracle DB获取行

时间:2011-06-17 15:46:55

标签: sql-server oracle linked-server

我们正在使用SQL Server 2008 R2 Standard和链接服务器从其他Oracle DB获取信息。我们链接服务器的提供程序是OLE DB的Oracle提供程序。

我有这个查询,我尝试在SQL Server中运行。

 select * from [HPROD]..[GTBUD].GT_BUD_COA_VW

使用Oracle SQL Developer我可以看到表中有44,859条记录。任何想法,为什么我无法获取数据?我应该指出,HPROD链接服务器,我遇到的问题是运行Oracle 11g 64位11.2.0.1.0生产。我们的SQL Server在Server 2008 R2 64上运行。

有趣的是,我们有另一个名为IRPROD的链接服务器使用与HPROD相同的提供程序。 IRPROD运行完全相同的Oracle版本,但我们没有遇到任何问题。一切都运行良好。

此外,如果我尝试使用OpenQuery,HPROD仍然不会显示任何行。

 select * from Openquery(HPROD,'select * from GTBUD.GT_BUD_COA_VW')

我很茫然。我们需要能够击中这些表格。

3 个答案:

答案 0 :(得分:1)

验证链接服务器是否指向您期望的数据库(以及登录用户名/架构)。

在Oracle方面,您可以检查v $ session以查看您是否有来自SQL Server节点的连接,以及v $ sql以查看已发出的查询,已完成的提取次数以及返回的行数。 / p>

答案 1 :(得分:0)

尝试指定架构名称。

select * from
[linkedServerName].[DatabaseName].[SchemaName].[TableName]

答案 2 :(得分:0)

我与实际创建视图的同事一起工作。

视图已加入和where子句。他正在使用这样的语法:

 AND b.end_dt = '30-JUN-2012'

当他改变格式以使用todate函数时,它可以工作。

 AND b.end_dt = TO_DATE('06/30/2012','MM/DD/YYYY')

现在旧方法在Oracle中运行得非常好,只有在通过SQL Server中的链接服务器时才会被禁止。

现在我们知道了。