HHeLiBeXの日記 正道編

日々の記憶の記録とメモ‥

SQL Server のデータベースに JDBC 接続するまで

Microsoft SQL Server 2005 Express Edition を導入し、Java プログラムから JDBC 接続をしようとした。

で、Management Studio でデータベースを作れば、後は Java プログラムで接続できる状態に‥と思ったらそうではない。
まず、インストール直後は JDBC での接続が有効になっていない。次の手順で有効にする。

  1. スタートメニューの[プログラム]-[Microsoft SQL Server 2005]-[校正ツール]-[SQL Server 構成マネージャ]を起動。
  2. 左側のツリーで[SQL Server 2005 ネットワークの構成]-[SQLEXPRESS のプロトコル]を選択。
  3. 右側で、「TCP/IP」を右クリックし、[有効化]を選択。
  4. 左側のツリーで[SQL Server 2005 のサービス]を選択。
  5. 右側で、「SQL Server (SQLEXPRESS)」を右クリックして[再起動]を選択。(または[停止]、[開始]でも可。)

続いて、JDBC 接続するときのポート番号が、上記のサイトには「1433」というサンプルが書いてあるのだが、このポート番号で接続待ちをしているプロセスはいない。
先の「TCP/IP」のプロパティで設定できそうな気がするのだが、よく分からないので、デフォルトのポート番号を探すことにする。

  1. タスクマネージャを開き、プロセス「sqlservr.exe」のプロセスID(PID)を確認する。
  2. コマンドプロンプトを起動する。
  3. netstat -ano」を実行し、先ほど確認したプロセスIDを探す。

たとえば、プロセスIDが「9784」だった場合、次のような行が出力の中に見つかるはず。

アクティブな接続

  プロトコル  ローカル アドレス          外部アドレス        状態           PID
    :
  TCP    0.0.0.0:54575          0.0.0.0:0              LISTENING       9784
    :
  TCP    [::]:54575             [::]:0                 LISTENING       9784
    :

で、ポート番号は「54575」であるということが分かる。
あとは、冒頭の4つ目のサイトに書いてあるサンプルのように、

String connectionUrl = "jdbc:sqlserver://localhost:54575;" +
   "databaseName=AdventureWorks;user=MyUserName;password=*****;";
Connection con = DriverManager.getConnection(connectionUrl);

と書いてもいいし、ユーザ名とパスワードは URL に含めずに

String connectionUrl = "jdbc:sqlserver://localhost:54575;" +
   "databaseName=AdventureWorks;";
Connection con = DriverManager.getConnection(connectionUrl, "MyUserName", "*****");

でもよい。