トップ回答者
SQL Server 2005でOracle XE 11gにリンクサーバーを貼って、データを見たいのですがやり方を教えていただけませんか。

質問
-
クライアントPC内での話です。
SQL Server2005とOracle XE 11gがインストールされています。
OracleXE11gはインストールしたばかりで、SQL Developerにて接続名を「oracle_system」から「con_A」に変更し、
1つだけテーブル「TABLE_A」を追加しました。
SQL Plusでの確認では、connect / as sysdba でコネクトした場合は、select * from TABLE_A; でSelectできませんが、
connect system でパスワードを入力してコネクトした場合は、select * from TABLE_A; でSelectすることができました。
--
この状態でSQL Server 2005からリンクサーバーでOracle XE 11gに接続し、TABLE_Aの内容をSelectするには
どのようにしたらよいのでしょうか。
--
現在までにやったこととしては、Management Studioの新しいリンクサーバーの作成で、以下のようにリンクサーバーを作成しました。
**
リンクサーバー:ORALE_LINK
プロバイダ:Microsoft OLE DB Provider for Oracle
製品名:Oracle
データソース:(空白)
プロバイダ文字列:(空白)
セキュリティ:このセキュリティコンテキストを使用する
- リモートログイン:SYSTEM
- パスワード:(SYSTEMのパスワード)
**
ここで、作成されたリンクサーバーのORACLE_LINKを開いてCatalogsの中身を確認しても、「con_A」は存在しておらず、
「System Catalogs」と「default」という2つの要素があるだけです。(その中にも「con_A」はいません。)
ゴールとしてはManagement Studioで以下のようなイメージのクエリが実行できればオッケーです。
select * from ORACLE_LINK.con_A.TABLE_A
--
初歩的な質問を長々と説明して申し訳ございませんが、方法を教えていただければ幸いです。
よろしくお願いいたします。
回答
すべての返信
-
システムストアドプロシージャである、sp_addlinkedserver を使ってリンクサーバーを設定します。
簡単にOracleの環境を作ることができないため、とりあえずサポートページのリンクを貼っておきますね。http://msdn.microsoft.com/ja-jp/library/ms190479(v=sql.90).aspx
-
CatTailさんありがとうございます。
sp_addlinkedserver コマンドからも実行してみたのですが、違いがよくわかりませんでした。。。
知識が少なくて申し訳ございません。
--
進展としては、以下のコマンドを打つことで、TABLE_Aが存在するということは確認できました。sp_tables_ex @table_server=ORACLE_LINK, @table_schema='SYSTEM'
--
そこで以下のようにクエリを作成したところ、エラーが発生しております。
select * from ORACLE_LINK.con_A.SYSTEM.TABLE_A
**
メッセージ 7312、レベル 16、状態 1、行 1
リンク サーバー "ORACLE_LINK" の OLE DB プロバイダ "MSDAORA" のスキーマまたはカタログを使用できません。4 部構成の名前が指定されましたが、このプロバイダではカタログまたはスキーマを使用するのに必要なインターフェイスが公開されていません。
**
区切りが4つがよくないのかと思い、以下のようにもクエリを指定してみました。
select * from ORACLE_LINK.con_A.TABLE_A
**
メッセージ 208、レベル 16、状態 1、行 1
オブジェクト名 'ORA_LINK.oracle_system.MST製品' が無効です。**
すると上記エラーとなります。
何か助言をいただければ幸いです。
よろしくお願いいたします。