【SQL Server】Oracleへのリンクサーバーを作成する
サーバA
Windows Server 2008 R2 x64
SQL Server 2012 R2 x64
サーバB
Windows Server 2003 R2 x86
Oracle 11g 11.2.0.1.0 x86
サーバAのSQL Serverにリンクサーバーを作成し、サーバBを参照できるようにする方法が分かったので、記しておく。
前提としては、当たり前のように、それぞれのDBが、外部からアクセス可能になっていること。(特にOracle側)
手順
全部サーバAで作業をする。
1.『SQL Server 構成マネージャー』から、SQL Serverを停止させておく。
2.OTNからSQL Serverのビット数に合わせたODACをダウンロードしてくる。
※xcopy版でないもの!!!
x86
Oracle Data Access Components (ODAC) for Windows Downloads
x64
64ビットのOracle Data Access Components(ODAC)のダウンロード
3.ODACをインストールする。
Oracle Provider for OLE DB、Oracle Instant Clientのみインストールを行う。
4.『SQL Server 構成マネージャー』から、SQL Serverを開始する。
5.『SQL Server Management Studio』から、サーバーオブジェクト→リンクサーバー→プロバイダーまで行き、
『OraOLEDB.Oracle』をダブルクリックしてプロパティを開く。
『InProcess 許可』にチェックを入れてOKする。
6.リンクサーバーを作成する。
ポート番号までちゃんと指定する。
いろいろなサイトでさまよった結果
・SQL Serverを動作させるユーザーを、Administratorsグループに追加するとか、
ODACのディレクトリをSQL Serverを動作させるユーザーでアクセス権限を持たせる
とか。
→ODAC入れとけば別にいらなかった。
・Instant Clientでセットアップする。
ODACでInstant ClientおよびOLE DBをインストールすれば面倒なことは何もなかっ
た。
Instant Clientというより、OLE DBを、ODAC xcopy版でセットアップすると、何
やってもうまくいかなかった。
・SQL Server 構成マネージャーで、TCP/IPを有効にしないとダメ。
無効にしても繋がった。データソースの指定方法に依存したりする、かも?