SQL Server から Oracle に接続する【ODBC DSNレス接続編】

SQL Server から Oracle に接続する【ODBC編】」では、ODBC の設定(システムDSNへのデータソース追加)を行いましたが、このデータソース追加をせずにODBC接続(DSNレス接続)ができるようなので試してみます。

DSN レス接続を利用したリンクサーバーの作成

作成したデータソースを利用しないリンクサーバーを作成します。ここでのポイントはデータソースは空欄で、プロバイダー文字列にデータソース作成時の情報を盛り込むことです。指定していたドライバ名を”Driver"に、TNS名を"Dbq"に設定します。データソースとして設定した値は 「SQL Server から Oracle に接続する【ODBC編】」 を参照ください。

Driver={Oracle in OraDB19Home1};Dbq=localhost:1521/ORCL
リンクサーバーの作成(1)

接続用のユーザ、パスワードの設定は前回と同じです。

リンクサーバーの作成(2)

新しくリンクサーバーが作成されました。

リンクサーバーの作成(3)

この接続文字列ですが、ドライバーやベンダーごとにいろんな書き方があります。
これをまとめている素晴らしいサイトを見つけたのでご紹介します。(英語ですが、、、)
 「The Connection Strings Reference
今回は、ここから Oracle → Oracle in OraHome92 を辿って見つけた文字列を利用しました。
ただし、ドライバ名は変更しています。

Driver={Oracle in OraHome92};Dbq=myTNSServiceName;Uid=myUsername;Pwd=myPassword;

Oracle in OraHome92 connection strings

SQL Server からの接続テスト

では、テストデータを参照してみます。ODBC 経由なので前回同様にパススルークエリで実行してみます。
OPENQUERYを使います)

SELECT * FROM OPENQUERY( ORACLE19LINK2, 'SELECT * FROM MSQLUSER.SAMPLE')
Oracle テストデータ参照

正しく取得できました。手間から考えても断然こちらの設定方法を推奨します。