SQL Serverは、リンクサーバーを使用して非SQLServerデータベースに接続できます。リンクサーバーメカニズムは、ODBCドライバーと呼ばれるミドルウェアを使用して、SQL ServerをOracle、MySQL、Salesforceなどのサードパーティのバックエンドに接続できます。
JavaデータベースのODBCドライバーに相当するのは、JDBCドライバーです。 Microsoftは、JDBCをサポートするリンクサーバーインターフェイスを提供していません。むしろ、ODBCとJDBCの間で変換できる、ODBCドライバーでODBCリンクサーバーインターフェイス(ODBCドライバー用のMicrosoft OLE DBプロバイダー)を使用する必要があります。たとえば、ODBC-JDBCゲートウェイ。 ODBC-JDBCゲートウェイは、ODBCを使用するアプリケーションをJDBC経由でアクセス可能なデータベースに接続します。アプリケーションにとって、ODBC-JDBCゲートウェイはODBCドライバーです。 JDBCドライバーにとって、ODBC-JDBCゲートウェイはJavaアプリケーションです。
ODBC-JDBCゲートウェイを使用して次のことを行います。
- SQL Serverテーブルに格納されているデータを操作する場合と同じように、リンクサーバーを使用してJDBCデータを操作します。
- SQL Server Integration Services(SSIS)を使用して、JDBCデータをSQLServerと統合します。
ODBC-JDBCゲートウェイのインストールとライセンス
- WindowsODBC-JDBCGatewayをダウンロードします。
- SQL Server / JDBCドライバーがインストールされているWindowsマシンに、ODBC-JDBCゲートウェイをインストールしてライセンスを取得します。
インストール手順については、ODBC-JDBCGatewayのドキュメントを参照してください。
ODBCデータソースの構成
ODBC-JDBCゲートウェイを使用してODBCアプリケーションをJDBCに接続する前に、システムODBCデータソースを構成する必要があります。 ODBCデータソースは、ターゲットデータベースの接続の詳細を格納します。
ODBCデータソースは、Windowsに含まれているODBCAdministratorで構成します。 ODBCアドミニストレータには2つのバージョンがあります。1つは32ビット、もう1つは64ビットです。 SQL Serverインスタンスが32ビットの場合は、32ビットバージョンを実行する必要があります。 SQL Serverインスタンスが64ビットの場合は、64ビットバージョンを実行する必要があります。
使用しているSQLServerのバージョンを確認するには、SQL Serverインスタンスに接続してから、次のSQLステートメントを実行します。
select SERVERPROPERTY('edition')
32ビットODBCAdministratorを実行するには、[Windowsの実行]ダイアログボックスで次のように入力します。
%windir%\ syswow64 \ odbcad32.exe
64ビットのODBCAdministratorを実行するには、[Windowsの実行]ダイアログボックスで次のように入力します。
odbcad32.exe
ODBCAdministratorを使用してODBC-JDBCゲートウェイデータソースを作成します。
ODBC-JDBCゲートウェイODBCデータソースの作成
- [システムDSN]タブを選択し、[追加]を選択します。
- [Create New Data Source]ダイアログボックスで、[ODBC-JDBC Gateway]を選択し、[Finish]を選択します。
- ODBC-JDBCゲートウェイDSNセットアップダイアログボックスを完了します:
設定 説明 DSN OJG_DSN ユーザー名 必要に応じて、Javaバックエンドのユーザー名。 パスワード ユーザー名のパスワード。 ドライバークラス ここに入力する必要のある値については、JDBCドライバーのドキュメントを参照してください。 クラスパス [追加]ボタンを使用して、JDBCドライバーのJAR/ZIPファイルを参照します。 URL JDBCドライバーがJavaバックエンドに接続するために使用するJDBCURL。使用する必要のある構文については、JDBCドライバーのドキュメントを参照してください。 - [テスト]ボタンを使用して、Javaバックエンドに正常に接続できることを確認します。
例:リンクサーバーを使用してJDBCデータを取得する
- Microsoft SQL Server Management Studioで、リンクサーバーを作成するSQLServerインスタンスに接続します。
リンクサーバーを作成するには、SQLServersysadmin固定サーバーの役割のメンバーであるアカウントでログオンする必要があります。
- サーバーオブジェクトを右クリックします。ポップアップメニューから[新規]>[リンクサーバー]を選択します。
- [リンクサーバー]ボックスに「OJG」と入力します。
- [プロバイダー]リストから、[ODBCドライバー用のMicrosoftOLEDBプロバイダー]を選択します。
- [データソース]ボックスに、ODBC-JDBCゲートウェイODBCデータソースの名前を入力し、[OK]を選択します。
SQL Serverは、接続をテストしてリンクサーバーを検証します。
- 「システムエラー126のため、指定されたドライバを読み込めませんでした:指定されたモジュールが見つかりませんでした」というエラーが表示された場合は、リンクサーバーを保持するかどうかを確認するメッセージが表示されたら[はい]を選択します。リンクサーバーを使用する前に、SQLServerインスタンスを再起動する必要があります。 ODBC-JDBCGatewayをインストールしたときにSQLServerがすでに実行されていた場合、SQLServerには最新バージョンのSystemPATH環境変数がありません。 ODBC-JDBCゲートウェイセットアッププログラムは、ドライバのエントリをシステムPATHに追加します。インスタンスを再起動すると、これらの変更がSQL Serverで利用可能になり、ODBC-JDBCゲートウェイをロードできるようになります。
- ODBC-JDBC Gatewayデータソースの指定を間違えた場合、「データソース名が見つかりません。デフォルトのドライバが指定されていません。このエラーが発生した場合は、リンクサーバーを保持するかどうかを確認するメッセージが表示されたら[いいえ]を選択してください。 [データソース]ボックスの値を編集します。
- 次のいずれかを使用してJDBCデータをクエリできます。
- 分散クエリの4つの部分からなるテーブル名。
4つの部分からなるテーブル名の形式は次のとおりです。
server_name 。[database_name ]。[schema_name ]。table_name 。
Javaバックエンドによっては、データベース名とスキーマを省略する必要があります。例:
SELECT * from OJG ... my_table
- OPENQUERY関数のパススルークエリ。例:
SELECT * FROM OPENQUERY(OJG、'SELECT * FROM my_table')
SQL Serverは、パススルークエリを未解釈のクエリ文字列としてODBC-JDBCゲートウェイに送信します。これは、SQL Serverがクエリにいかなる種類のロジックも適用したり、そのクエリが何を実行するかを推定しようとしたりしないことを意味します。
- 分散クエリの4つの部分からなるテーブル名。