リンクサーバー接続先の参照エラーについて

このQ&Aのポイント
  • SQL Server 2005からOracle 10gへのリンクサーバー設定により、参照できるテーブルとできないテーブルが発生しました。
  • 参照不可なテーブルを参照すると、「メッセージ 7442」というエラーが出てしまいます。
  • Oracle 10g側のテーブル定義を変更することができないため、SQL Server 2005側での対応方法を教えてください。
回答を見る
  • ベストアンサー

リンクサーバー接続先の参照エラーについて

お世話になります。 [SQL Server 2005]から[Oracle 10g]に対し、リンクサーバーを設定いたしました。 このリンクサーバー越しにテーブルを参照した所、参照できるテーブルとできないテーブルが、 起こってしまいました。 参照不可なテーブルを参照しようとしますと、 「メッセージ 7442、 レベル 16、状態 1、行 1 リンク サーバー "hoge" の OLE DB プロバイダ "MSDAORA" から返されたテーブル ""AAA"."BBB"" のインデックス定義が無効です。」 が、出てしまいます。 尚、このテーブルには主キーが設定されておりません。ユニークキーのみ設定されております。 [Oracle 10g]側のテーブル定義を変更することができませんので、何とか[SQL Server 2005]側での 対応方法をご存知の方は、ご教授頂けませんでしょうか。 ※主キーの張られておりますテーブルに対しては問題なく参照が行えます。 ご回答に際しまして補足が必要でしたら、お申し付け下さい。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

もしまだ解決していないなら。。 手持ちの環境(SQL Server 2008/Oracle11g)では主キーがなくても同じ事象は確認できなかったので、 主キーがない=リンクサーバで利用できない、ではないかもしれません。 ただ、いずれにしても、Oracle側を変更できない以上、SQL Server側で対処できる範囲は限られます。 ・Microsoftのではなく、OracleのODBCドライバを使っていることを確認する  http://www.oracle.com/technology/global/jp/software/tech/windows/ole_db/index.html ・OPENQUERYを使ってみる  SELECT * FROM OPENQUERY(リンクサーバ名, 'OracleのSELECT文') ・どうしてもダメなら、何か経由させてみる  例えばOracleのテーブルをAccessにリンクして、そのMDBに対してリンクサーバを設定してみるなど  Accessの場合、主キーがなくても主キーを指定してリンクできるので、何か違いが出るかもしれません。

関連するQ&A

  • Oracleへのリンクサーバー設定について

    お世話になります。 下記環境におきまして、SQL ServerよりOracleへリンクサーバーを作成しようとしたところ、 「リンクサーバー"XXX"のOLE DB プロバイダ"MSDAORA"のデータソースオブジェクトを初期化できません。 リンクサーバー"XXX"のOLE DB プロバイダ"MSDAORA"から、メッセージ"Oracle"クライアントと ネットワークコンポーネントが見つかりません。これらのコンポーネントはOracle Corporationから提供され、 Oracle Version 7.3.3(またはそれ以降)のクライアント ソフトウェアの一部としてインストールされます。 プロバイダは、これらのコンポーネントがインストールされるまで機能しません。"が返されました。 (Microsoft SQL Server,エラー:7303)」 となり、作成に失敗してしまいます。 SQL Serverには10gのOracleクライアントをインストールしてあるのですが、原因がわかりません。 どなたか、同じ原因を経験され、解決された方はいらっしゃいますか。 もし、お分かりでしたら、ご教授頂きたいのですが。 よろしくお願いいたします。 尚、SQL Serverは運用の関係上、Oracleクライアントインストール後、再起動は行っておりません。 環境 OS:Windows2003 DB:SQL Server 2005 Oracle:10g

  • SQL ServerにOracleのリンクサーバー

    SQL Server 2000にOracle 11g R2のインスタンスをリンクサーバーとして追加したいです 以下の通りSQL Server 2000にOracle 11g R2のインスタンスをリンクサーバーとして追加することは 可能でしょうか。 <サーバー1> OS:Windows Server 2003 Standard Edition DBMS:SQL Server 2000 設定内容: (1)Oracle 11g R2のクライアントをインストール (2)サーバー2のインスタンスへのリンクサーバーを設定し、テーブルを参照(更新はしない) <サーバー2> OS:Windows Server 2008 R2 Standard Edition DBMS:Oracle 11g R2 設定内容:あるインスタンスにサーバー1が参照するためのテーブルを準備 また、さらに別のクライアントPCからMS Access 2010でサーバー1のリンクサーバーに対して パススルークエリを発行したりAccessにリンクテーブルを作成することは可能でしょうか。 SQL Server向けのSQL文が使えますでしょうか。

  • ACCESS2002でSQL Server2005のテーブルをODBC

    ACCESS2002でSQL Server2005のテーブルをODBC接続でリンクさせています。(「外部データの取り込み」-「テーブルのリンク」) そのリンクしたテーブルのプロパティーを見ると「主キー」が設定されているのですが、プロシージャでこのテーブルをOpenし、IndexでSeekすることはサポートされていないのでしょうか?

  • SQL Server2008でリンクサーバからテーブルを作成する方法

    SQL Server2008で、リンクサーバからテーブル(属性も含み)作成を行うには どのようにするのでしょうか (リンクサーバの設定は行えましたが、SQL Serverの知識はほとんどありません・・・) into テーブル名 FROM リンクサーバ(テーブル) というので テーブル属性も含めてテーブルを作成できるとの記事はあったの ですが、クエリで実行してもエラーとなってしまいます。 SQL Server2008でSQLを発行するには特別な指定が必要なのでしょうか? (SQLを発行する場所が間違っているのかもですが) 初歩的な質問で申し訳ございません、よろしくお願いします

  • transact-sqlからoracle DBを参照したい。

    transact-sqlからoracle DBを参照したい。 sql-server 2005 window server 2003 R2での環境です。transact-sqlを使用して、他のマシン上にあるoracle データベース上のテーブルのデータを取得し、そのデータを自身のマシン上のsql serverのテーブルに格納したいのですが、そのようなことはできますでしょうか。 もし、できるとすれば、どのような方法(手順)になるのでしょうか。

  • ストアドプロシジャからデータベースリンクを使っての参照について

    OracleツールのJDeveloperを使って、PL/SQLでストアドプロシジャを作成しています。 (Oracleは9i) DBが2つありまして(DB-AとDB-Bとする)、 DB-Bから、データベースリンクを介してDB-Aのテーブルを参照しています。 (SELECT * FROM XXXXX.テーブル名@データベースリンク名) DB-Bに接続してSQL*PLUS上で上記SELECT文を実行すると正しく処理されるのですが 上記SELECT文が組み込まれているDB-B上のプロシジャをコンパイルすると、 「ORA-04052」が返ってきてしまいます。 エラーコードを調べると、 DB-A側のテーブルを参照できていないようで、 「KGLR.SQLが実行されていることを確認してください」とのことなのですが、 この「KGLR.SQL」とやらが何者かわかりません。 タチの悪いことに、上記の現象が出る端末と出ない端末があります。 みんな同じIDでログインしているので権限の問題ではないと思ってるのですが・・・ 「KGLR.SQL」は置いといて、このような事象に出くわしたことのある方、 推測でもなんらかの情報をお持ちの方がいらっしゃいましたらご教授ください。 よろしくお願い致します。

  • 【PostgreからSQL-ServerのテーブルをSelect】

    【PostgreからSQL-ServerのテーブルをSelect】 PostgreからSQL-ServerのDBにあるテーブルをSelectしたいのですが、 ODBCまでは設定したものの、それ以降のやり方がわかりません。 どなたか教えていただけないでしょうか。 【参照元】 *Windows 2003 ServerR2(32Bit) *SQL-Server 2005 【参照先】 *Windows 2003 ServerR2(32bit) *PostgreSQL 8.2 参照先と参照元を変更すればSQL-Server上で出来そうなのですが、 今回、Postgre側からSQL-ServerにSelectしなければなりません。 OracleでいうところのDB Linkなのですが、どなたか教えていただけないでしょうか。 URLのご提示でも結構です。 どうぞよろしくお願いいたします。 Postgre ---- Select(後にViewに変更予定) ----→ SQL-Server

  • oracle 9i と SQL SERVER 2005 DBリンクにつ

    oracle 9i と SQL SERVER 2005 DBリンクについて とても困ってます。 よろしくお願いします。 仕事で、oracle 9iとSQL SERVER 2005をDBリンクさせて、oracle 9iのTableとSQL SERVER 2005のTableを結合させて、SELECT文を作成したいです。 本番環境は、DBサ―bとWebサーバは別々でとりあえずlocal開発環境を作成しています。 <確認したこと> ・global_names = Flase ・ODBCの設定はSQL SERVER 2005に接続確認しました。  →データソース名は、「SQLSRV」です。 ・inithsodbc.oraの設定    HS_FDS_CONNECT_INFO = SQLSRV    HS_FDS_TRACE_LEVEL = OFF ・LISTENER.ORAの設定(編集後再起動しました)  → (SID_DESC = (SID_NAME = HSODBC) (ORACLE_HOME = D:\oracle\Ora9IUTF) (PROGRAM = hsodbc) ・TNSNAMES.ORAの設定 HSODBC = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST =localhost)(PORT = 1521)) ) (CONNECT_DATA = (SID = HSODBC) ) (HS = OK) ) ・DBリンク作成(小文字を認識するため、ダブルクォーテーションで囲います)   CREATE DATABASE LINK DB_LINK_SQLSRV   CONNECT TO "ユーザ" IDENTIFIED BY "パスワード" USING 'HSODBC'; ・SELECT文   SELECT * FROM テーブル名@DB_LINK_SQLSRV; 上記の手順ですが、サービス名が解決できません。

  • SQLserver2000でプライマリーキーの設定でのエラー

    こんばんわ。 現在SQLの勉強をSQLserver2000でしているのですが、 SQL Enterprise Managerを使って、ある列に主キーを定義しようとして、鍵マークをつけて、保存しようとすると 以下のようなエラーがでて設定できません。 テーブル 'xxxxx' - インデックス 'PK_xxxxx' を作成できません。 ODBC エラー : [Microsoft][ODBC SQL Server Driver][SQL Server]インデックス ID 1 で重複したキーが見つかったので、CREATE UNIQUE INDEX は終了しました。もっとも重要な主キーは 'yyyyy ' です。 [Microsoft][ODBC SQL Server Driver][SQL Server]制約を作成できませんでした。以前のエラーを調べてください。 [Microsoft][ODBC SQL Server Driver][SQL Server]ステートメントは終了されました。 初心者なので、このエラーの意味するところが理解できません。 なにが間違っているのでしょうか。 よろしくお願いします。

  • ASPでACCESSからoracleにリンクさせて表示したい。

    はじめまして。 いろいろ調べてみたのですが、わからなかったので質問させてください。 現在、ASPを利用してACCESS(2003)のテーブルから簡単な検索をできるようにしています。 このACCESSのテーブルは、別サーバーで動いているoracle(10g)のデーターベースから EXCELでエクスポートしたものを、ACCESSでインポートして使用していました。 この手間を省くため、ACCESSとoracleをODBCを使用してリンクさせたいと思いました。 まず、ODBCのシステムDSNで「oracle in oraclient10g」で追加して、接続を確認。 その後、ACCESSにてODBCでテーブルをリンクさせて開くことも確認できました。しかし、 WEB上で確認したところ、サーバー側・クライアント側でも以下のエラーが出てしまいます。 Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [Microsoft][ODBC Microsoft Access Driver] ODBC--'****' への接続が失敗しました。 これはどのようにすれば、出来るようになるでしょうか。 初歩的な質問で申し訳ありませんが、ご教授ください。 よろしくお願いします。