たきるブログ

C#やOracleなどの情報を書いています。

【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を停止させておく。
 f:id:metroit:20150624114707p:plain

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のみインストールを行う。
 f:id:metroit:20150624115059p:plain
 f:id:metroit:20150624115107p:plain

4.『SQL Server 構成マネージャー』から、SQL Serverを開始する。

5.『SQL Server Management Studio』から、サーバーオブジェクト→リンクサーバー→プロバイダーまで行き、
 『OraOLEDB.Oracle』をダブルクリックしてプロパティを開く。
 『InProcess 許可』にチェックを入れてOKする。
 f:id:metroit:20150624115252p:plain

6.リンクサーバーを作成する。
 ポート番号までちゃんと指定する。
 f:id:metroit:20150624115530p:plain
 f:id:metroit:20150624115536p:plain

いろいろなサイトでさまよった結果

SQL Serverを動作させるユーザーを、Administratorsグループに追加するとか、
 ODACのディレクトリをSQL Serverを動作させるユーザーでアクセス権限を持たせる
 とか。
 →ODAC入れとけば別にいらなかった。

・Instant Clientでセットアップする。
 ODACでInstant ClientおよびOLE DBをインストールすれば面倒なことは何もなかっ
 た。
 Instant Clientというより、OLE DBを、ODAC xcopy版でセットアップすると、何
 やってもうまくいかなかった。

SQL Server 構成マネージャーで、TCP/IPを有効にしないとダメ。
 無効にしても繋がった。データソースの指定方法に依存したりする、かも?