読者です 読者をやめる 読者になる 読者になる

HHeLiBeXの日記 正道編

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

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

Java SQL Server

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", "*****");

でもよい。