SQL Server 2012 ExpressをWindows Server 2008 R2にインストールしました。
SQL Server 2012 Express を Windows 2008 R2 にインストールするこのサーバーに、Ubuntu + Javaで接続してみようと思います。
JDBCドライバの入手とサンプルプログラム
Microsoft JDBC Driver 4.0 for SQL Server
http://www.microsoft.com/downloads/ja-jp/details.aspx?familyid=49c554ca-41a0-472c-b728-75df5789369cこちらから、sqljdbc_4.0.2206.100_jpn.tar.gzをダウンロードしました。
解凍したフォルダの中に、「sqljdbc4.jar」というファイルがありますので、
これをJavaの実行パスに含めておきます。
接続確認用のプログラムはこんな感じになりました。
- package com.fc2.blog68.symfoware;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.Statement;
- public class Sample {
- public static void main(String[] args) {
-
- String jdbc_url = "jdbc:sqlserver://192.168.1.5\\SQLEXPRESS;databaseName=sample";
- String user = "sa";
- String password = "Passw0rd";
-
- try {
- Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
- Connection con = DriverManager.getConnection(jdbc_url, user, password);
- con.setAutoCommit(true);
- Statement stmt = con.createStatement();
-
- stmt.close();
- con.close();
-
- } catch (Exception e){
- e.printStackTrace();
- }
- }
- }
ファイアウォールにUDP:1434許可とSQL Server Browserの起動
まず、ファイアウオールの設定でUDP1434を許可。
SQL Server Browser サービスを開始します。
これを行っていないと、こんなエラーが発生して接続できません。
ホスト 192.168.1.5、名前付きインスタンス sqlexpress への接続が失敗しました。
エラー: "java.net.SocketTimeoutException: Receive timed out"。
サーバーとインスタンスの名前を調べ、ポート 1434 への UDP トラフィックがファイアウォールにブ
ロックされていないことを確認してください。
SQL Server 2005 以降では、SQL Server Browser サービスがホスト上で実行されていることを確認してください。
まずは、UDP:1434を許可するルールをファイアウォールに追加。
※追加手順の詳細はこちらをご参考に。
Windows Server 2008 R2で通信ポートの開放を行う手順(Symfoware外部接続許可)次に、[スタート]-[Microsoft SQL Server 2012]-[構成ツール]-[SQL Server 構成マネージャー]を選択。
SQL Server 構成マネージャーを起動します。
[SQL Server のサービス]を選択し、[SQL Server Browser]を右クリック。
プロパティを選択します。
[サービス]タブを選択し、[開始モード]を自動に変更してOK。
前の画面に戻るので、もう一度SQL Server Browserを右クリックして、開始を選択します。
TCP/IP接続の有効化
上記設定に引き続き、TCP/IPの有効化を行います。
ここまで設定した状態で、外部から接続しようとすると、こんなエラーになります。
サーバー sqlexpress は、TCP/IP をリッスンするように構成されていません。
SQL Server 構成マネージャーで[SQL Server ネットワークの構成] - [SQLEXPRESSのプロトコル]を選択。
TCP/IPの項目を選択して右クリックし、プロパティを選択します。
プロトコルタブの[有効]の項目が[いいえ]になっていると思います。
ここを[はい]に変更します。
静的ポート指定とファイアウォールへのTCP:1433許可を追加
最後に静的ポート接続への変更と、ファイアウォールへTCP許可ルールの追加を行います。
ここまでの設定しか行っていない状態で接続しようとすると、こんなエラーになります。
ホスト 192.168.1.5、ポート 40245 への TCP/IP 接続が失敗しました。
エラー: "connect timed out。
接続プロパティを調べて、SQL Server のインスタンスがホスト上で実行されていて、
ポートへの TCP/IP 接続が許可されており、そのポートへの TCP 接続が
ファイアウォールにブロックされていないことを確認してください。
先ほどと同じ、TCP/IPの設定画面で、[IPアドレス]タブを選択します。
一番下までスクロールして、IP Allの項目を確認。
TCP動的ポートに数値が指定され、TCPポートは空白になっていると思います。
これをTCPポートに1433、TCP動的ポートは空白に変更します。
設定が終わったら、SQL Server のサービスを再起動しておきます。
最後に、ファイアウォールの設定で、TCP:1433を許可するルールを追加します。
これで外部からの接続を受け付けるようになったかと思います。
長かった・・・
【参考URL】
SQL Server 2008 Express にリモート接続
http://awoni.net/fc/remote/- 関連記事
テーマ:データベース - ジャンル:コンピュータ
- 2012/04/15(日) 18:12:01|
- SQL Server
-
| トラックバック:0
-
| コメント:0