1. ホーム
  2. java

[解決済み] JDBC SQLServerException: "このドライバは統合認証用に設定されていません。"

2022-03-01 20:01:30

質問

のサーバサイドエクステンションを書いています。 スマートフォックスサーバー (SFS)を使用しています。 ログインスクリプトで、MS SQL Serverに接続する必要がありますが、JDBCを使用して接続しようとしています。 デバッグ環境でJDBCのコードをテストしたところ、正常に動作しました。

しかし

サーバーサイドの拡張機能を(仕様通り)SFSの "extensions"フォルダに入れると、以下のようになります。 com.microsoft.sqlserver.jdbc.SQLServerException :

"このドライバは統合認証用に設定されていません。

このエラーについてググってみたところ、通常、ファイル sqljdbc_auth.dll このファイルをシステムパスのフォルダにコピーしたのですが、それでもうまくいきません。

他にご意見はありますか?

解決方法は?

sqljdbc_auth.dllは、プロセッサアーキテクチャ(x86/x64/ia64)ごとに異なるバージョンが存在します。 SFSサーバーで使用しているのはどちらですか?

SFSが動作しているJVMのアーキテクチャに合わせて選択する必要があります。 つまり、64ビットマシン上で32ビットJavaを実行している場合は、x64バージョンではなく、x86バージョンが必要です。

SFSを使ったことがないので、ログをどこかに書き込んでいるかどうかはわかりません。 もしそうなら、ログに何か役に立つことが書き込まれていないか、見てみる価値はあるかもしれません。

EDIT : また、SFSはC:⇄Program Files (x86)で実行されるため、64bitのJavaを使用しているとは言い切れないのです。

の中に次のような行がありました。 SFSドキュメント は、「はじめに > 要件とインストール」にあります。 この行は、WindowsではなくLinuxにのみ適用されますが、Windows上のSFSも32ビットJavaを使用することを示唆しているのかもしれません。

バージョン1.5以降、SmartFoxServerには独自のx86 32-bit Sun Java Runtimeが搭載されています。

インストールされているJavaのバージョンを確認するには、cmdで次のコマンドを実行します。 Java -version

コンソールに以下のように表示されます。

C:\Users\967097>java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

ここで、インストールされているjavaのバージョンのビットタイプを確認することができます。

x64版ではなく、x86版のsqljdbc_auth.dllを使用した場合、アプリケーションは動作しますか? もし、x86のDLLで突然動き出すようであれば、SFSは32bitのJavaを使用しているはずです。

SFSの起動に使用するバッチファイルはありますか? もしあれば、それを読むことで、SFSがどこからJavaを実行しているのかが分かるかもしれません。 また PATH . Javaは、DLLをロードするために java.library.path システム・プロパティに設定されており、Windows では、この値を PATH 環境変数

SFSが32ビットJavaと64ビットJavaのどちらを使用しているかまだ判断できない場合は、プロセス・エクスプローラを使用して、SFSを実行しているjava.exeプロセスが起動された環境を調べてみてください。