1. ホーム
  2. java

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

2022-02-06 04:54:39

質問

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

BUT

サーバーサイドの拡張機能を(仕様通り)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を使用しているとは100%言い切れない。

の中に次のような行を発見しました。 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プロセスが起動した環境を確認してみてください。