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 データベースで実行するのに 0.5 秒かかるものでは非常に遅いので、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 に答える