[SQL] PRB: Oracle への分散クエリで "Could not open table"

この記事は、以前は次の ID で公開されていました: JP240340
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
現象
MSDAORA OLE DB プロバイダを使用して、Oracle リンク サーバーへ、たとえば下記のようなクエリを実行すると、
  select * from OracleServer..demo.Product
次のようなエラーが発生する場合があります。
Server: Msg 7306, Level 16, State 2, Line 1
Could not open table '"demo"."Product"' from OLE DB provider 'MSDAORA'. Thespecified table does not exist.
[OLE/DB provider returned message: The specified table does not exist]
[OLE/DB provider returned message: ORA-00942: table or view does not exist]
原因
SQL Server がクエリをプロバイダに渡す時にクオートで囲まれた名前を使用しているため、Oracle が大文字小文字を区別することによって、クエリは動作しません。
回避策
Oracle リンク サーバーのテーブルを参照する場合、次のルールを使用します。
  • quoted identifier を使用せずにテーブル名と列名を Oracle に作成した場合、すべて大文字を使用します。たとえば、次のステートメントは正常に動作します。
        select * from OracleServer..DEMO.PRODUCT
  • quoted identifier を使用してテーブル名と列名を Oracle に作成した場合、名前のすべての文字に関して、Oracle でその名前が作成された時に使われた文字と同じ文字を使用します。
OpenQuery や OpenRowset 関数を使用している場合、大文字小文字の区別は問題ではありません。次のステートメントは正常に動作します。
  SELECT * FROM OPENQUERY(OracleServer, 'select * from PrOdUct')  go  SELECT * FROM OPENRowset('MSDAORA', 'myOracleServer';'demo';'demo',                                                  'select * from PrOdUct' )  go
詳細
Microsoft SQL Server 7.0 は、OLE DB プロバイダに対するクエリの実行を可能にしています。これは、OpenQuery や OpenRowset Transact-SQL 関数、リンク サーバー名を含む 4 つの部分から成る名前 (four part name) によるクエリを使用することによって達成されます。
  sp_addlinkedserver 'mylinkedserver', 'product_name', 'myoledbprovider',                     'data_source', 'location', 'provider_string', 'catalog'  SELECT * FROM OPENQUERY(mylinkedserver, 'select * from table1')

再現手順

  1. Oracle リンク サーバーをセットアップします。
         EXEC sp_addlinkedserver 'OracleServer','Oracle','MSDAORA','myOracleServer'     go     EXEC sp_addlinkedsrvlogin 'OracleServer', 'FALSE', NULL, 'demo', 'demo'     go
  2. 4 つの部分から成る名前を使用したクエリを実行します。
         SELECT * FROM OracleServer..demo.Product
上記は、「現象」で述べられているエラーを報告します。

参照

Oracle をデータソースとする SQL Server 分散クエリに関する追加情報は、SQL Server7.0 Books Online トピック "OLE DB Provider for Oracle" と Microsoft KnowledgeBase の次の資料を参照してください。
文書番号 : 220915
タイトル : [SQL]PRB: Oracle への分散クエリに必要なコンポーネント

文書番号 : 221552
タイトル : [SQL]PRB: Oracle の NUMERIC 列で SQL 分散クエリはエラーをだす
関連情報
この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 240340 (最終更新日 2000-01-12) をもとに作成したものです。

プロパティ

文書番号:240340 - 最終更新日: 02/23/2014 16:12:36 - リビジョン: 5.1

  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft OLE DB Provider for Oracle Server 1.0
  • Microsoft OLE DB Provider for Oracle Server 1.0
  • Microsoft OLE DB Provider for Oracle Server 1.0
  • Microsoft OLE DB Provider for Oracle Server 1.0
  • Microsoft SQL Server 2000 Standard Edition
  • kbnosurvey kbarchive distributed kbprb KB240340
フィードバック