0

我正在尝试从 SQL Server 2008 R2 连接到 Oracle 链接服务器,但 Oracle 架构中有一个 $ 符号。不幸的是,我无法更改架构名称,但在尝试使用 OpenQuery 提取信息时,它似乎给我带来了问题。有可能逃脱这个角色吗?

select * 
FROM OPENQUERY(linksrv, 'SELECT * FROM [ABC$SCHEMA].[TABLE] where [ID] = ''ABCD0001'' ') oq

以上给了我一条错误消息,如下所示:

OLE DB provider "OraOLEDB.Oracle" for linked server "linksrv" returned message "ORA-00903: invalid table name".

下面的查询有效,但是在 Oracle 数据库上运行需要半秒钟的东西速度很慢,所以我希望 OPENQUERY 可能会给我更快的结果?

SELECT *
  FROM [linksrv]..[ABC$SCHEMA].[TABLE]
  where [ID] = 'ABCD0001'
GO

Version information:
Microsoft SQL Server Management Studio      10.50.2500.0
Microsoft Analysis Services Client Tools    10.50.2500.0
Microsoft Data Access Components (MDAC)     6.1.7601.17514
Microsoft MSXML             3.0 6.0 
Microsoft Internet Explorer         9.0.8112.16421
Microsoft .NET Framework            2.0.50727.5456
Operating System                6.1.7601

Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi

任何帮助将不胜感激!!

提前致谢!!

4

1 回答 1

0

根据评论,Oracle 的语法似乎应该不同,其中方括号实际上会导致问题而不是阻止问题:

SELECT * 
FROM OPENQUERY(linksrv, 'SELECT * FROM ABC$SCHEMA.TABLE ...') AS oq;
于 2012-08-15T16:01:31.397 回答