読者です 読者をやめる 読者になる 読者になる
無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

統合認証でSQL Serverに接続するサンプル

Java SQL Server

次のお仕事ではSQLServerを使うんですが、これのユーザー認証では「統合認証」とかいうのがサポートされていて、ユーザー名/パスワードの指定なしで認証ができるらしい。具体的にはASP.NETアプリケーションのワーカープロセスを動作させているWindowsユーザーアカウントを利用して認証を行なう」とのこと。

MOJAO TECH - 【SQL Server】Windows統合認証とSQL Server認証

ということで、以下は、統合認証でSQLServerに接続してみるサンプルです。

String sqlServer = "<データベースサーバー>";
String dbName = "データベース";

Connection conn = null;
try {
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); // ドライバクラスをロード
    String connectionUrl = new StringBuilder("jdbc:sqlserver://")
        .append( sqlServer ).append( ";" )
        .append( "databaseName=" ).append( dbName )
        .append( ";integratedSecurity=true;" ).toString(); // 「integratedSecurity」を「true」にする。
    conn = DriverManager.getConnection(connectionUrl);
    conn.setAutoCommit(false);
    
    // ...
    
} catch ( SQLException e ) {
    e.printStackTrace(); // TODO
} catch ( ClassNotFoundException e ) {
    e.printStackTrace(); // TODO
} finally {
    if ( conn != null ) {
        try {
            conn.close();
        } catch ( SQLException e ) {
            e.printStackTrace();// TODO
        }
    }
}

以下の2つがポイントかな。

  • 「integratedSecurity」を「true」にする。
  • 必要なライブラリを「java.library.path」に追加する。(※環境により使用するライブラリが違うみたいなので注意。)
-Djava.library.path=<JDBCのインストール先>\sqljdbc_1.2\jpn\auth\x86

あと、統合認証はWindows環境限定とのこと。ふむ。SQLサーバーとクライアントが同一ドメインにある必要があるとかそうゆう制限もありそうだな。いや、ドメインとか全然意味わかんないんだけど!大丈夫かな。


参考:MSDN - JDBC ドライバによる SQL Server への接続