4

質問する前に、背景を説明しましょう。私は主にWindowsを運営しているお店にいます。Windows Server(主に2003)で実行されているいくつかのバッチアプリケーションがあります。これらのバッチアプリケーションのほとんどは、C#およびC++で記述されています。ただし、Javaで記述されたアプリケーションがいくつかあります。

バッチJavaアプリケーションは、JDBCを使用してSQLServer2005データベースに接続しています。アプリケーションサーバーを使用していないことに注意してください。

現在、データベース接続情報(データベース、ユーザー名、パスワード)をWindowsレジストリに保存しています。

残念ながら、これらの本当に不親切な監査人(ユーモアの悪い試み)は、データベース接続情報をWindowsレジストリに保存するという決定について私たちに満足していません。現在、WindowsAuthentaticationを使用してSQLServerに接続するようにバッチアプリケーションを更新しています。

C#およびC++アプリケーションにWindowsAuthentaticationを使用することは問題ではありません。しかし、私はJavaアプリケーションの方向性に固執しています。

WindowsAuthentaticationを使用してWindowsサーバーで実行されているJavaバッチアプリケーションからSQLServer2005データベースに接続できるかどうかを誰かにアドバイスできますか?ここでも、アプリケーションサーバーは使用していません。

これが可能な場合、推奨されるアプローチは何ですか?

監査人を満足させるパスワードを単純に暗号化する戦略がありますが、すべてのバッチアプリケーションをWindowsAuthentatication経由でSQLServerに接続することをお勧めします。

4

2 に答える 2

7

次のように、Windows認証を使用してJavaプログラムからSQLServerに接続できます。

  1. プログラムの実行に使用されるアプリケーションのWindowsアカウントを作成します。このアカウントの資格情報は、サーバーへの接続に使用されます。
  2. ここからSQLServer用のMicrosoftJDBCドライバーを入手します。
  3. JDBCURLを次のように構成します。

    jdbc:sqlserver://<hostname>;databaseName=<DBName>;integratedSecurity=true
    
  4. コマンドラインからJavaプログラムを実行するランチャーを構成して、次のJVMパラメーターを含めます。

    -Djava.library.path="<jdbc driver dll location>"
    

    ここで、locationは、以前にダウンロードしたJDBCドライバーがインストールまたは抽出されたディレクトリーです。C:\Program Files\sqljdbc_4.0.2206.100_enu\sqljdbc_4.0\enu\auth\x64私の場合でした。Luke Woodwardがコメントで述べたように、dllは、これらのプログラムの実行に使用されるJVMに基づいて選択する必要があります。

上記の構成では、SQL Serverへの接続は、Javaプログラム/プロセスを実行しているドメインユーザーのWindows認証資格情報を使用します。

于 2012-09-20T19:22:03.327 に答える
0

最初のステップはODBCをセットアップすることです。コントロールパネル->管理ツール->ODBCに移動できます。ウィザードのセットアップに続いて、Windows認証アカウントを使用してMSSQLServerに接続するための新しいDSNを追加します。2番目の手順は、SQLServer認証アカウントを使用する場合と同じです。ただし、唯一の変更は、接続文字列がjdbc:odbc:dsn-nameに変更されることです。すでにサーバーに接続されているため、ユーザー名/パスワードを使用する必要はありません。

于 2012-09-22T08:12:52.373 に答える