#最初に
備忘録として記述してあるので、一部端折っている部分があります。
#やりたい事
SQL ServerからOracle(11g)にリンクサーバーを設定し、SQLServerへのSELECT文実行でSQL ServerのテーブルとOracleのテーブルをJOINした結果を取得する。
#前提条件
- SQL Server導入済み
- SQL Server Management Studio導入済み
- Oracle導入済み
作業順序
- SQL ServerがOracleに接続出来るようにする
- リンクサーバーの設定をする
- SELECT文を実行する
SQL ServerがOracleに接続出来るようにする
OracleのページからOracle Clientのインストーラを取得して、実行。実行は当たり前だが、SQL Serverが起動している端末で行う。インストールコンポーネントの選択でOracle Provider for OLE DB
がインストールされる様にする。
インストール完了後、端末を再起動をする。
リンクサーバーの設定をする
SQL Server Management Studioからの設定方法。
- SQL Serverに接続して、サーバーオブジェクト->リンクサーバー->プロバイダーを開く
- OraOLEDB.Oracleをダブルクリック
-
InProcess許可
にチェックを付けてOKとする -
リンクサーバー
で右クリックして、新しいリンクサーバーを作成 - 以下の様に設定してOKとする
ページ | 項目 | 設定値 |
---|---|---|
全般 | リンクサーバー | 任意 |
サーバーの種類 | その他のデータソース | |
プロバイダー | Oracle Provider for OLE DB | |
製品名 | Oracle | |
データソース | サーバ(IP等):ポート番号/サービス (例:192.168.11.1:1521/oradb) | |
プロバイダー文字列 | 空 | |
セキュリティ | ローカルサーバーのログインとリモートサーバーのログインのマッピング | なし |
上記一覧で定義されないログインの接続方法 | このセキュリティコンテキストを使用する | |
リモートログイン | Oracle接続時のユーザー名 | |
パスワード | Oracle接続時のパスワード |
Select文を実行する
SelectFromLinkServer(Oracle)
SELECT * from リンクサーバー名..スキーマ名.テーブル名
SQL Server Management Studio上ではリンクサーバー名->default->スキーマ名.テーブル名
のツリーで見える為、以下の様なSELECT文を想像するが、default
は不要。
NGSelectFromLinkServer(Oracle)
--エラーSELECT文。メッセージ7312となる
SELECT * from リンクサーバー名.default.スキーマ名.テーブル名