MacのEclipse4.3からSQL Server 2012に接続させてみた。
あまり需要がないと思うけど、諸事情があり設定することになったので、メモ書きを残しておきます。結論から言うと、SQL ServerのJDBCドライバがタイプ4に対応しているので、Macからでも問題なく通信できました。
実行環境
- ホスト環境
- ゲスト環境
- Windows 8.1 Pro
- SQL Server 2012 Express
SQL Serverのインストール
Microsoftのホームページからインストーラがダウンロード出来ます。
今回は、SQL Server Management Studio(GUIの管理ツール)も使いたいので、「JPN\x64\SQLEXPRADV_x64_JPN.exe」を選択します。僕の環境では、Internet ExplorerからDLしないと、「File is corrupt」というエラーが表示されました。ご注意ください。
ダウンロードした「SQLEXPRADV_x64_JPN.exe」をダブルクリックして、「SQL Serverインストールセンター」を起動します。インストールは、「インストール」→「SQL Serverの新規スタンドアロンインストールを実行するか、既存のインストールに機能を追加します。」を選びます。
ここから先の詳しいインストール方法は、こちらを参照してください。
リモート接続の有効化
SQL Serverは、デフォルトではTCP/IP経由でのリモート接続は出来ないため設定を行います。
1. スタートメニューより、「SQL Server 構成マネージャー」を選択します。
2. 「SQL Serverネットーワークの構成」→「<データベースの名前>のプロトコル」→「TCP/IP」→「有効化」を選択します。
3.「SQL Serverネットーワークの構成」→「<データベースの名前>のプロトコル」→「TCP/IP」→「プロパティ」を選択します。
4. IPAllのTCPポートを任意の値(1433を推奨)を入力し、「OK」ボタンを選択します。
5. 「SQL Serverのサービス」→「SQL Server(<データベースの名前>)」→「再起動」を選択します。
これで、TCP/IP接続が可能となります。
ファイヤウォールの設定
続いて、上記設定したSQL Serverのポートを開放し、ホストOSからの通信ができるように設定します。
1. 「コントロールパネル」→「Windows ファイアウォール」→「詳細設定」を選択します。
2. 以下の「受信の規制」を追加します。
規制の種類 | ポート |
---|---|
プロトコルおよびポート | TCP/上記で設定したポート番号(1433) |
操作 | 接続を許可する |
プロファイル | ドメイン/プライベート/パブリック |
Eclipseのインストール
インストールは、このサイトを参考にしてみてください。
JDBCドライバ
SQL ServerのJDBCドライバについては、Micosoftから提供されています。
ダウンロードしたZIPファイルを展開後、「sqljdbc4.jar」が存在することを確認します。このファイルがJDBCドライバとなります。このファイルを任意の場所へ移動し、プロジェクトのビルドパスに登録するようにしてください。
通信テスト
Javaプログラムから、通信できるか確認します。以下の様なプログラムを作成し、通信できるか確認してみます。
package jp.sbkro.sqlserver; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class TestConnect { public static void main(String[] args) { System.out.println("Connection Start."); try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); Connection connection = DriverManager.getConnection( "jdbc:sqlserver://<ゲストOSのIPアドレス>:1433;databaseName=<接続データベース名>;", "<ユーザ名>", "<パスワード>"); System.out.println("Connection Success."); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } System.out.println("Connection End."); } }
コンソールから以下のような表示がされると、通信成功です。
Connection Start. Connection Success. Connection End.