22

私は現在JavaでSQLを扱っています。最近、このエラーが発生しました:

com.microsoft.sqlserver.jdbc.AuthenticationJNI <clinit>
WARNING: Failed to load the sqljdbc_auth.dll cause : no sqljdbc_auth in java.library.path

integratedSecurity=true;これは、接続文字列にパラメーターを追加すると発生します。エラー メッセージには、sqljdbc_auth.dll が見つからないことが明確に示されているため、sqljdbc4.jar を保持しているのと同じパスに dll を配置しようとしました。

ただし、これは機能しないため、実際にこの dll をビルド パスに追加する方法を知りたいですか? それを行う特別な方法はありますか?

4

10 に答える 10

42

あなたのwindows/system32フォルダーに保管してください。それは動作します。このリンクsqljdbc_auth.dllからsqljdbcドライバーをダウンロードしてください。それを解凍すると、それが見つかります。sqljdbc_auth.dllsqljdbc_auth.dll

于 2013-10-01T12:25:07.983 に答える
11

簡単に修正するには、次の手順に従います。

  1. 後藤: https://docs.microsoft.com/en-us/sql/connect/jdbc/building-the-connection-url#Connectingintegrated
  2. JDBC ファイルをダウンロードし、任意の場所に解凍します
  3. OS x64 または x86 に一致する auth フォルダーを開きます
  4. sqljdbc_auth.dll ファイルをコピーします
  5. 貼り付け: C:\Program Files\Java\jdk_version\bin

EclipseまたはNetBeansのいずれかを再起動します

于 2017-09-27T00:05:17.330 に答える
4

java.library.pathを含むディレクトリを指す-D というシステム プロパティを設定する必要がありますsqljdbc_auth.dll

于 2013-06-24T13:47:25.000 に答える
4

Set java.library.path to a directory containing this DLL which Java uses to find native libraries. Specify -D switch on the command line

java -Djava.library.path=C:\Java\native\libs YourProgram

C:\Java\native\libs should contain sqljdbc_auth.dll

Look at this SO post if you are using Eclipse or at this blog if you want to set programatically.

于 2013-06-24T13:55:33.077 に答える
2

私の場合、この問題に何日も費やした後、以下のこの問題に関する紳士の助けが解決策であり、私にとってはうまくいきました。 問題: Spring Boot を使用して SqlServer DB をサービス アカウント認証で接続しようとすると、以下の例外がスローされます。

com.microsoft.sqlserver.jdbc.SQLServerException: このドライバーは統合認証用に構成されていません。ClientConnectionId:ab942951-31f6-44bf-90aa-7ac4cec2e206 at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:2392) ~[mssql-jdbc-6.1.0.jre8.jar!/:na] 原因: java.lang.UnsatisfiedLinkError: sqljdbc_auth (java.library.path に見つかりません) at java.lang.ClassLoader.loadLibraryWithPath(ClassLoader.java:1462) ~[na:2.9 (04-02-2020)] 解決策: JTDS を使用してください次の手順のドライバー

  1. sqlserver ドライバーの代わりに JTDS ドライバーを使用します。

    ----------------- JTDS を使用した専用 Pick Update プロパティ PROD ----------------

    datasource.dedicatedpicup.url=jdbc:jtds:sqlserver://YourSqlServer:PortNo/DatabaseName;instance=InstanceName;domain=DomainName
    datasource.dedicatedpicup.jdbcUrl=${datasource.dedicatedpicup.url}
    datasource.dedicatedpicup.username=$da-XYZ
    datasource.dedicatedpicup.password=ENC(XYZ)
    datasource.dedicatedpicup.driver-class-name=net.sourceforge.jtds.jdbc.Driver
    
  1. 構成プロパティで Hikari を削除します。

    #datasource.dedicatedpicup.hikari.connection-timeout=60000 #datasource.dedicatedpicup.hikari.maximum-pool-size=5

  2. sqljdbc4 依存関係を追加します。

    com.microsoft.sqlserver sqljdbc4 4.0
  3. Tomcatjdbc の依存関係を追加します。

    org.apache.tomcat tomcat-jdbc
  4. spring-boot-starter-jdbc 依存関係から HikariCP を除外します。

    org.springframework.boot spring-boot-starter-jdbc com.zaxxer HikariCP
于 2021-02-24T20:49:47.667 に答える
0

友人 私は異なるビットバージョンのために同じ問題を抱えていました 次の点を確認してください * jdk ビット 64 または 32 * sqljdbc_4.0\enu\auth\x64 または x86 のパス このディレクトリは jdk ビットによって異なります * sqljdbc_auth.dll を選択しますこのファイルはビット x64 または x86 に基づいており、これを system32 フォルダーに配置すると機能します

于 2016-01-19T05:22:43.797 に答える
0

DLL がクラスパスにあることを確認する必要があります。

そのような方法の 1 つは、DLL へのパスを PATH 環境変数に入れることです。

他のオプションは、次のように、変数 LD_LIBRARY_PATH の VM 引数に追加することです。

java -Djava.library.path=/path/to/my/dll -cp /my/classpath/goes/here MainClass

于 2013-06-24T13:47:02.297 に答える