2014年1月20日月曜日

SQL Server 2008 R2 からOracle 10gへのリンクサーバー設定

SQL Serverにてリンクサーバーの設定を久しぶりに行い、簡単に設定することができませんでしたので、記載しておきます。特に、ここで問題となったのは、64bit化に伴う内容でした。

今回の環境としては下記となります。
[SQL Server]
OS:Windows Server 2008 R2 Standard
DB:SQL Server 2008 R2

[Oracle]
OS:Windows Server 2008 Standard SP2
DB:Oracle 10.2.0.4

32bitのSQL Serverを利用していた際には、リンクサーバーを設定する際のプロバイダーとして、「Microsoft OLE DB Provider for Oracle」を使用することで問題なく利用することができていた経験がありました。そこで、今回も「Microsoft OLE DB Provider for Oracle」を使用することを想定していたのですが、このプロバイダが選択欄に存在しませんでした。
(※Oracleクライアントはインストール済みの状態です。)

原因は、64bit版の「Microsoft OLE DB Provider for Oracle」は存在しないとのことでした。

では、他の方法として、64bit版のODBCを利用し、プロバイダーとして「Microsoft OLE DB Provider for ODBC Drivers」方法を試しました。しかし、テーブルの一覧は表示されるのですが、テーブルにアクセス(参照)することはできませんでした。

次に、プロバイダーとして「Oracle Provider for OLE DB」を使用する方法を試しましたが、接続テストは成功するのですが、テーブルの一覧する表示されませんでした。

いろいろと調べた結果、「リンクサーバー」-「プロバイダー」-「OraOLEDB.Oracle」のプロパティにて、「InProcess許可」を有効化することで問題なく利用することができるようになりました。

参考までに、リンクサーバーの設定内容も記載しておきます。