我们正在使用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')
我很茫然。我们需要能够击中这些表格。
答案 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中的链接服务器时才会被禁止。
现在我们知道了。