SQLServerへのJDBC接続

MS SQLServerは,Windows Server(2000 Server or 2003 Server)でなくともインストールすることができる.
というわけで開発用のXPマシンにSQLServerが入れて,JDBCでの接続をやってみる.

基本的にはPostgresとかと同じようにやるだけのこと,なんだけどいくつか小さい罠にハマッタ….


まずはhttp://www.microsoft.com/japan/msdn/sqlserver/downloads/jdbc/default.aspxからドライバをダウンロード.
setup.exeがダウンロードされ,こいつを実行するとインストーラが立ち上がる.
デフォルト任せでぽちぽちやると勝手にインストールされるんだが,いったいどこに何がインストールされたんだかわかりゃしない.
ドライバのjarファイルはどこやねん!ってなる.(1つ目の罠)

調べたところ,デフォルト(インストーラで「完全」を選んだ場合)では,C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib配下に以下の3つのjarが配備される

  • msutil.jar
  • mssqlserver.jar
  • msbase.jar

これらをclasspathに加えてやる.(eclipseならプロジェクト配下にjarをコピーしてビルドパスに追加)

これでとりあえず準備完了.


でもってサンプルコードを書いてみる.ご丁寧にMSのサイトにあるのでそれを参考にする.
http://support.microsoft.com/?scid=kb;ja;313100

でもって実行してみると,

ユーザー '<データベース接続ユーザ名>' のログインに失敗しました。理由 : SQL Server の信頼関係接続に関連付けられていません。

なんてエラーが発生!(2つ目の罠)


調べてみたところ,これは,SQLServerセットアップ時に認証を「Windows認証」のみに設定したにもかかわらず,SQL Server 認証のユーザアカウントでアクセスするとこうなるらしい.

対応としては、DBの認証方法を「Windows 認証」のみ から「混合モード(Windows 認証とSQL Server 認証)」に変更してあげる

方法は,SQL Server Enterprise Managerで,

  1. データベースサーバ((local)(Windows NT)とか表示されてるやつ)を右クリックしてプロパティを表示
  2. セキュリティタブの認証の部分のチェックを上記(混合モード(Windows 認証とSQL Server 認証))のように設定
  3. 「適用」ボタンクリック

ダイアログが出て、DB(SQLServer)が自動で再起動される.

SQLServer再起動後に同じプログラムを実行すると無事に接続と相成りました.

いじょ.