JDBC SQLServerException: "이 드라이버는 통합 인증용으로 구성되지 않았습니다."
저는 SmartFox Server(SFS)를 위한 "서버 측 확장"을 작성하고 있습니다.로그인 스크립트에서 JDBC를 사용하여 MS SQL Server에 연결해야 합니다.디버그 환경에서 JDBC 코드를 테스트해 보았는데 정상적으로 작동합니다.
그렇지만
() SFS "extensions"가 com.microsoft.sqlserver.jdbc.SQLServerException
:
"이 드라이버는 통합 인증용으로 구성되지 않았습니다."
이 오류에 대해 구글에 검색해보니 보통 파일이sqljdbc_auth.dll
시스템 경로에 없습니다. 이 파일을 시스템 경로의 폴더에 복사했는데도 작동하지 않습니다!
다른 제안은 없습니까?
Windows 인증 통합 보안을 사용하는 경우
- Microsoft 사이트에서 sqljdbc_6.0.8112.100_enu.exe를 다운로드합니다.
- exe 설치(zip 경로의 지침 읽기)
sqljdbc_4.0/enu/auth/x64/sqljdbc_auth.dll을 복사합니다.
Java/jre7/bin 및 대상
Java/jre7/lib
이 후에는 데이터 도구에서 데이터베이스를 풀 수 있도록 최대 절전 모드 도구에 연결할 수 있습니다.
프로세서 아키텍처마다 다른 버전의 sqljdbc_auth.dll이 있습니다(x86/x64/ia64).SFS 서버에서 어떤 것을 사용하고 있습니까?
SFS가 실행 중인 JVM의 아키텍처와 일치하는 것을 선택해야 합니다.따라서 64비트 시스템에서 32비트 Java를 실행하는 경우 x64 버전이 아닌 x86 버전이 필요합니다.
저는 SFS를 사용해 본 적이 없어서 로그가 어디에도 기록되는지 모르겠습니다.이 경우 로그에 도움이 되는 내용이 기록되었는지 확인하기 위해 로그를 검토할 가치가 있습니다.
편집: SFS가 C:\Program Files(x86)와 반대로 C:\Program Files가 부족하다고 해서 64비트 Java를 사용하고 있다고 100% 확신할 수는 없습니다.
SFS 문서의 소개 > 요구사항 및 설치에서 다음 행을 찾았습니다.이 행은 Windows와 달리 Linux에만 적용되지만 Windows의 SFS에서도 32비트 Java를 사용하는 것으로 나타납니다.
버전 1.5 이후 SmartFox Server는 자체 x86 32비트 Sun Java Runtime과 함께 제공됩니다.
버전을 중 것입니다. " " " " Java " " " " " " " " " " " " " " 입니다.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 버전 대신 sqljdbc_auth.dll의 x86 버전을 사용하는 경우 애플리케이션이 작동합니까?x86 DLL에서 갑자기 작동하기 시작하면 SFS에서 32비트 Java를 사용해야 합니다.
SFS를 시작하는 데 사용되는 배치 파일이 있습니까?그렇다면 SFS가 Java를 실행하는 위치를 알려주는 데 도움이 될 수 있습니다.또한 변경 사항이 있는지 확인합니다.PATH
는 Java는 DLL만 있 할 수 .java.library.path
속성 이이 " " " "의 됩니다.PATH
환경 변수입니다.
여전히 SFS가 32비트 Java를 사용하는지 64비트 Java를 사용하는지 확인할 수 없는 경우 프로세스 탐색기를 사용하여 SFS를 실행하는 java.exe 프로세스가 시작된 환경을 살펴 보십시오.
저의 경우 해결하기 위해 다음을 수행했습니다.
Microsoft JDBC Driver 8.2 for SQL Server 다운로드(zip)(여기서 확인 - https://learn.microsoft.com/en-us/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-ver15) ).
그런 다음 zip 파일에서 다음 폴더로 이동했습니다.
sqljdbc_8.2 > enu > auth > x64
그리고 "mssql-jdbc_auth-8.2.2.x64.dll"을 C:\Program Files\Java\jdk-12.0.1\bin으로 복사했습니다.
폴더에 저장JRE 파일.dll 파일을 합니다.
저도 같은 문제에 직면했고 그 후 운영 체제에 따라 JRE 폴더, 즉 jre7/bin/file.dll에 sqljdbc_auth.dll(x86 또는 x64)을 배치한 다음 애플리케이션.jar를 실행하면 완벽하게 작동했습니다.에게 효과가 . 할 수 . 또한 이 될 것입니다. :) ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅠ 당신도 이것을 시도할 수 있습니다. 이것 또한 당신에게 도움이 될 수 있습니다 :)
나는 다음 윈도우 인증 문자열에 대해 같은 문제에 직면했습니다.
jdbc:sqlserver://host:1433;integratedSecurity=true
기본 authenticationScheme=Native인증, 그래서 그것은 일부 마이크로소프트 dll에 의존할 수 있습니다.이를 해결하기 위해 아래와 같이 NTLM으로 인증 체계 업데이트를 진행합니다.
jdbc:sqlserver://host:1433;authenticationScheme=NTLM;integratedSecurity=true;domain=myDomain
참고: 지정된 사용자 이름에 도메인이 없습니다.
Microsoft에서 jdbc 드라이버(버전 7.2)를 다운로드하고 sqljdbc_auth.dll을 C:\Program Files\Java\jre\bin 및 C:\Program Files\Java\jdk\bin 폴더에 복사합니다.Java 32비트를 실행하는 경우 Program Files(x86) 폴더로 이동합니다.
나는 비슷한 문제가 있었고 아래의 pom.xml에 .vmx 파일의 위치를 배치했습니다.
< 구성 >
< argLine > -Djava.library.path="C:\*\**"<argLine>
그리고 그것은 나에게 효과가 있었습니다.
이것은 저에게 효과가 있었습니다.
Microsoft JDBC Driver for SQL Server 파일은 다음과 같습니다.거기서 당신은 찾을 것입니다.sqljdbc_auth.dll
Microsoft JDBC Driver x.x for SQL Server\sqljdbc_x.x\enu\auth\x64
하세요.System32
Windows 폴더입니다.
이제 연결을 테스트합니다.
다른 답변에 대해서는 용어나 어떤 파일(이름)을 특수한 위치에 복사해야 하는지, 복사해야 하는지에 대해 약간 다른 견해를 가지고 있습니다.(항상 sqljdbc_auth.dll이 되는 것은 아니며 공용 JRE의 jre/bin에 항상 배치되는 것도 아닙니다.더 많은 것들이 뒤따릅니다.
먼저 이후 버전의 MS SQL Server 드라이버에서 파일 이름이 sqljdbc_auth.dll이 아니라 mssql-jdbc_auth-8.4.1.x64.dll(물론 특정 최신 버전에서는)이라는 것을 알게 되었습니다.파일의 정확한 이름(그리고 아직 파일이 없다면 어디서 찾아야 하는지)에 대해서는 MS에서 다운로드한 zip에서 찾을 수 있는 모든 것입니다.
구체적으로, 제 경우 해당 zip은 sqljdbc_8.4.1.0_enu.zip이었고, dll은 sqljdbc_8 내에 있습니다.4\enu\auth\x64(64비트 Windows에서 실행 중이며 64비트 JVM 내에서 DLL을 구현할 계획이므로).
둘째로, 이 곳에 있는 많은 사람들이 Windows 시스템 32나 공용 JRE의 jre/bin과 같은 위치에 파일을 배치할 것을 제안하지만, 저에게는 효과가 없었습니다.
제 경우, 사용 중인 앱 서버(예: Tomcat)가 컴퓨터에서 특정 JVM/JRE를 사용하도록 구성된 경우입니다.그리고 이 DLL을 해당 JVM의 jre/bin 폴더(Java 11 이상의 경우 기본적으로 JRE로 구현되는 bin 폴더)에 넣어야 했습니다.
그런 다음 앱 서버(또는 JVM)를 다시 시작합니다.
여기에 Gradle 또는 maven을 사용하는 사용자가 있고 이미 mssql jdbc 드라이버의 특정 버전을 명시적으로 가져오지 않은 경우 이러한 솔루션은 모두 작동하지 않습니다.시스템과 호환되지 않거나 mssql-jdbc-auth dll이 포함되지 않은 mssql 라이브러리 버전에 대한 과도 종속성이 거의 확실합니다.
대신 이렇게 하십시오. (그리고 메이븐과 동등한 것을 사용한다면)
dependencies {
implementation('com.some.dependencie:that-depends-on-mssql:0.0.1beta')
implementation('com.microsoft.sqlserver:mssql-jdbc') {
version {
strictly '10.2.0.jre8'
// Or whatever version you need, i.e. 10.2.0.jre11, etc
}
}
}
그러면 지정한 버전으로 전이 종속성이 대체됩니다.
Java 17 및 mssql-jdbc 버전 11.2.3.jre17을 사용하려고 할 때 동일한 예외가 발생했습니다.
나의 예외는
- jdbc.SQL Server 예외:이 드라이버는 통합 인증에 대해 구성되지 않았습니다.
- 자바.java.java불만족스러운 링크 오류:인증 DLL mssql-jdbc_auth-11.2.3.x64를 로드할 수 없습니다.
이 경우 링크 https://learn.microsoft.com/en-us/sql/connect/jdbc/release-notes-for-the-jdbc-driver?view=sql-server-ver16 에서 MSSQL JDBC 드라이버 sqljdbc_11.2.3.0_enu를 다운로드했습니다.
Zip 파일 sqljdbc_11.2.3.0_enu를 추출하고 아래 2단계를 따릅니다.
copy dllmssql-jdbc_auth-11.2.3.x64.dll을 경로 "dll-folderpath"\sqljdbc_11.2.3.0_enu\sqljdbc_11에서 복사합니다.2\enu\auth\x64
Java 17 C:\Program Files\Java\jdk-17.0.5\bin의 bin 폴더에 붙여넣기
이 문제가 해결된 후
이 오류가 자신의 Cognos 로그(cognoserver.log)에 표시되었기 때문에 여기에 오는 모든 사람을 위한 것입니다.
의 64비트 버전을 복사해야 합니다.sqljdbcauth.dll
안으로D:\Program Files\IBM\Cognos\Analytics\bin64
의 32비트 버전을 복사해야 합니다.sqljdbcauth.dll
안으로D:\Program Files\IBM\Cognos\Analytics\bin
작업 중인 설치(11.1.3)를 최신 버전(11.1.7)으로 업그레이드하면 이러한 파일이 삭제되었습니다.
물론 그것은 도코의 어느 곳에서도 언급되지 않았습니다.그것은 오직 그것에 대해서만 말합니다.install_location\drivers
폴더
포함시켰습니다.c:\full-path\mssql-jdbc_auth-9.2.1.x64.dll
CLASSPATH(윈도우즈 환경)에서 이 개념은 다음과 유사합니다.om.xml
지시문 사용 개념: -Djava.library.path="C:\*\\**"
DBeaver에 이 문제가 있는 사람은 다른 답변에 언급된 .dll 파일을 복사해야 합니다.C:\Users\myuser\AppData\Local\DBeaver\jre\bin
언급URL : https://stackoverflow.com/questions/6087819/jdbc-sqlserverexception-this-driver-is-not-configured-for-integrated-authentic
'programing' 카테고리의 다른 글
MongoDB 복합 키 (0) | 2023.06.29 |
---|---|
winapi: 프로세스를 생성하지만 프로세스의 창을 숨기시겠습니까? (0) | 2023.06.29 |
MongoDB를 사용하는 것보다 더 크거나 더 적은 작업을 수행하려면 어떻게 해야 합니까? (0) | 2023.06.29 |
Oracle SQL: 타임스탬프를 UTC로 변환 (0) | 2023.06.29 |
(MongoDB Java) 어레이에 $push (0) | 2023.06.24 |