09

SQL Server Express 2012+ JDBC

SQL Server Express に JDBC でつなごうとしてなぜかつながらずかなり悩んだのでメモ。 SQL Server Express は インストール時にTCP/IPソケットが有効になっていない。なのでこれを有効にしてやる必要がある。この設定はSQLServer の構成マネージャの「SQL Server ネットワークの構成>SQLEXPRESSのプロトコル」を選択するとTCP/IPの項目があるのでプロパティを開き、有効にする。IPアドレスのタブで個別のアドレスに対してポートを割り振る事ができるが、このタブの設定は少々注意して行った方が良いようだ。TCP動的ポートが0になっているとなんらかのポートを自動的に振ろうとして面倒なことになるので、これはとにかく空欄にするのが良いようだ。あとVM等が入っているとやたらネットワークインタフェースが増えるので、どれに設定が必要なのか注意してみていく必要がある。また、一番最後にAllなる項目があり、これを設定すれば全体的に効果を発揮するのかもしれないが、複合的にどういう挙動を示すのか確認できていない。なので今回とにかく固定になるように動的ポートは0を削除して空欄に設定した。

で、ちゃんとポートが開いているかの確認の仕方。 まず構成マネージャで「SQL Serverのサービス」の項目でSQL Server(SQLEXPRESS)のプロセスIDを確認する。これはタスクマネージャでも確認できるのでそっちでも良い。 で、コマンドプロンプトで netstat -ano を実行する。右側にプロセスIDが出てくるので、この中から上記で確認したプロセスIDを探す。左列にローカルアドレスが出ているので、ここで指定したポートになっているかを確認できる。これでポートが開いていて、それでも接続できないならファイアウォールの設定を疑えばいいかな。

当初まさかTCP/IPが無効になっているなどと思わず、なんだかんだで3、4時間浪費してしまった。