MSDE 2000 Release A
with Microsoft SQL Server 2000 Driver for JDBC

■MSDE 2000 Release A概要
MSDE(Microsoft SQL Server 2000 Desktop Engine)は、
SQL Serverの機能限定版で、無償で提供されるものです。
SQL Server + Java的な実験をする目的で、使ってみました。

■Microsoft SQL Server 2000 Driver for JDBC概要
Microsoftから提供されている、SQL Server向けJDBC Driverです。
こちらは、MSDEだけでなく、製品のSQL Serverにも使えます。
ちなみに、現在の最新バージョンはSP2となっており、
エラーメッセージが文字化けする不具合も解消しているようです。

■前提
OS: Windows XP SP1
JDK: Sun JDK 1.4

■ダウンロード
以下のURLより、それぞれダウンロードすることが可能です。
Books Onlineはドキュメントなので、SQL Serverについて詳しくない人は、
こちらも入手することをお勧めします。

■インストール
インストールする順番は、以下の通りです。

まずは、MSDE本体をインストールします。

  1. JPN_MSDE2000A.exeを起動します。
  2. デフォルトインストール先フォルダ: C:\MSDERelA
  3. C:\MSDERelA\Setup.exeを以下の形式で実行します。
    Setup.exe SAPWD="sa123" (sa123は任意)
    ファイル名を指定して実行が簡単でよいでしょう。

    以下のようなダイアログが表示される場合は、
    パスワードが指定されていない可能性があります。

  4. セットアップが完了すると、デフォルトでC:\Program Files\Microsoft SQL Serverにインストールされます。
  5. C:\Program Files\Microsoft SQL Server\80\Tools\Binn\SVRNETCN.exeを起動します。
    下図のように、TCP/IPを有効にします。
  6. SQL Serverのログオンモードを変更します。
    デフォルトでは、Windows認証となっており、ユーザIDとパスワードによる認証を受け付けないためです。
    以下のレジストリの値を書き換えます。LoginMode=1 → LoginMode=2
    「\\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\LoginMode」
    参考URL) 宇宙仮面の C# プログラミング
  7. C:\Program Files\Microsoft SQL Server\80\Tools\Binn\sqlmangr.exeを起動します。
    開始/再開のとなりの緑色の三角ボタンを押します。
    図のように一時停止、停止ボタンが有効となれば起動しています。
  8. C:\Program Files\Microsoft SQL Server\80\Tools\Binn\osql.exeを、-Eオプション付きで起動します。
    1>というプロンプトが表示されれば、ログイン完了です。
    1>select * from sysobjects
    2>go
    で何か表示されれば、正常に動作しています。
    参考) ログオンモードを変更していれば、osql -U sa -P sa123でもログインできます。

次に、JDBCドライバをインストールします。

  1. setup.exeを起動し、インストーラの指示にしたがって操作します。
  2. デフォルトインストールフォルダ: C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC
  3. setupJPN.exe(SP2)を起動し、インストーラの指示にしたがって操作します。
■JDBCでの接続
  1. 以下のようなプログラムを書きます。
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class Test
    {
    	public static void main(String[] args) throws Exception
    	{
    		Connection con = null;
    		Statement stmt = null;
    		ResultSet rs = null;
    		try
    		{
    			Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
    			con = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433", "sa", "sa123");
    			stmt = con.createStatement();
    			rs = stmt.executeQuery("select * from sysobjects");
    			while(rs.next())
    			{
    				System.out.println(rs.getString(1));
    			}
    		}
    		catch(SQLException e)
    		{
    			e.printStackTrace();
    			throw e;
    		}
    		finally
    		{
    			if(rs != null)
    			{
    				rs.close();
    			}
    			if(stmt != null)
    			{
    				stmt.close();
    			}
    			if(rs != null)
    			{
    				rs.close();
    			}
    		}
    	}
    }
    
  2. C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\libにある、
    msbase.jar / mssqlserver.jar / msutil.jarを全てクラスパスに通し、
    上記プログラムを実行します。
    何か表示されれば接続成功です。
■補足
・「ユーザー 'sa' のログインに失敗しました。理由 : SQL Server の信頼関係接続に関連付けられていません。」が表示される。
LoginModeの変更が行われていないかも知れません。インストールの手順6を見直してみてください。

・「SelectMethod=cursor」がないとうまく接続できない?
私の環境では、なくても問題なくつながりました。
SP2が出る以前の話か、また別の環境での話しなのかも知れません。