52

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

しかし

サーバー側の拡張機能を SFS の "extensions" フォルダーに配置すると (仕様に従って)、次のようになりますcom.microsoft.sqlserver.jdbc.SQLServerException

「このドライバーは統合認証用に構成されていません。」.

このエラーを Google で調べたところ、通常はファイルsqljdbc_auth.dllがシステム パスにないことが原因であることがわかりました。このファイルをシステム パスのフォルダーにコピーしましたが、それでも機能しません。

他の提案はありますか?

4

11 に答える 11

27

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

SFS が実行されている JVM のアーキテクチャーに一致するものを選択する必要があります。そのため、64 ビット マシンで 32 ビット Java を実行している場合は、x64 バージョンではなく、x86 バージョンが必要になります。

以前に SFS を使用したことがないため、ログがどこかに書き込まれるかどうかはわかりません。その場合は、これらのログを調べて、役立つ情報が書き込まれているかどうかを確認する価値があるかもしれません。

編集: C:\Program Files (x86) ではなく C:\Program Files が不足しているという理由だけで、SFS が 64 ビット Java を使用していることを 100% 確信することはできません。

SFS ドキュメントの [Introduction] > [Requirements and Installation ] の下に次の行が見つかりました。この行は Windows ではなく Linux にのみ適用されますが、Windows 上の SFS も 32 ビット Java を使用していることを示唆している可能性があります。

バージョン 1.5 以降、SmartFoxServer には独自の x86 32 ビット Sun Java ランタイムが付属しています。

インストールした Java のバージョンを簡単に確認する方法の 1 つは、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 は 32 ビット Java を使用している必要があります。

SFS を開始するために使用されるバッチファイルはありますか? もしそうなら、それを読んで、SFS がどこから Java を実行しているかを指摘するのに役立つかもしれません。への変更にも注意してPATHください。Java はシステム プロパティでのみ DLL をロードできますjava.library.path。Windows では、これはPATH環境変数の値に設定されます。

それでも SFS が 32 ビットと 64 ビットのどちらの Java を使用しているか判別できない場合は、Process Explorer を使用して、SFS を実行している java.exe プロセスが開始された環境を調べてみてください。

于 2011-05-22T12:26:52.193 に答える
7

次のWindows認証文字列で同じ問題に直面していました

jdbc:sqlserver://host:1433;integratedSecurity=true

デフォルトの authenticationScheme=NativeAuthentication であるため、一部の Microsoft dll に依存する可能性があります。これを修正するには、authenticationScheme を以下のように NTLM として更新します。

jdbc:sqlserver://host:1433;authenticationScheme=NTLM;integratedSecurity=true;domain=myDomain

:指定されたユーザー名はドメインなしでした

于 2020-09-07T07:47:18.030 に答える