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

文書翻訳 文書翻訳
文書番号: 240340 - 対象製品
この記事は、以前は次の 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 - 最終更新日: 2014年2月23日 - リビジョン: 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
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com