문제

나는 "서버 측 확장"을 작성 중입니다. SmartFox서버 (SFS).로그인 스크립트에서 JDBC를 사용하여 MS SQL Server에 연결해야 합니다.디버그 환경에서 JDBC 코드를 테스트했는데 제대로 작동합니다.

하지만

사양에 따라 서버측 확장을 SFS "확장" 폴더에 넣으면 다음과 같은 메시지가 나타납니다. com.microsoft.sqlserver.jdbc.SQLServerException:

"이 드라이버는 통합 인증용으로 구성되지 않았습니다."

Google에서 이 오류를 검색한 결과 일반적으로 파일이 sqljdbc_auth.dll 시스템 경로에 없습니다.이 파일을 시스템 경로의 폴더에 복사했는데 여전히 작동하지 않습니다!

다른 제안이 있나요?

도움이 되었습니까?

해결책

다양한 프로세서 아키텍처(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 문서 소개 > 요구 사항 및 설치에서.이 행은 Windows가 아닌 Linux에만 적용되지만 Windows의 SFS도 32비트 Java를 사용하는 것으로 제안될 수 있습니다.

버전 1.5부터 SmartFoxServer에는 자체 x86 32비트 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는 32비트 Java를 사용해야 합니다.

SFS를 시작하는 데 사용되는 배치 파일이 있습니까?그렇다면 이를 읽어보면 SFS가 Java를 실행하는 위치를 파악하는 데 도움이 될 수 있습니다.또한 PATH.Java는 DLL만 로드할 수 있습니다. java.library.path 시스템 속성이며 Windows에서는 이 값이 PATH 환경 변수.

SFS가 32비트 또는 64비트 Java를 사용하는지 여전히 확인할 수 없는 경우 Process Explorer를 사용하여 SFS를 실행하는 java.exe 프로세스가 시작된 환경을 살펴보세요.

다른 팁

Windows 인증 통합보안을 사용하는 경우

  1. 다운로드 sqljdbc_6.0.8112.100_enu.exe Microsoft 사이트에서
  2. exe를 설치하십시오(zip 경로의 지침을 읽으십시오).
  3. sqljdbc_4.0/enu/auth/x64/sqljdbc_auth.dll을 다음 위치에 복사합니다.

    자바/jre7/bin 그리고

    자바/jre7/lib

그런 다음 최대 절전 모드 도구에 연결하여 데이터 도구에서 데이터베이스를 가져올 수 있어야 합니다.

                                                            JRE 폴더에 .dll 파일을 넣으세요:-
나는 또한 같은 문제에 직면했고 그 후 JRE 폴더, 즉 jre7/bin/file.dll에 운영 체제에 따라 sqljdbc_auth.dll(x86 또는 x64)을 배치한 다음 내 application.jar을 실행했는데 완벽하게 작동했습니다.이것은 나에게 도움이 되었습니다. 시도해 볼 수도 있습니다. 이것이 도움이 될 수도 있습니다. :)

Microsoft에서 jdbc 드라이버(버전 7.2)를 다운로드하고 sqljdbc_auth.dll C:\Program Files\Java\jre\bin 및 C:\Program Files\Java\jdk\bin 폴더에 복사합니다.Java 32비트를 실행하는 경우 Program Files(x86) 폴더로 이동합니다.

제 경우에는 다음을 수행하여 해결했습니다.

SQL Server용 Microsoft JDBC Driver 8.2(zip)를 다운로드했습니다(여기에서 찾을 수 있음 - https://docs.microsoft.com/en-us/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-ver15).

그런 다음 zip 파일에서 다음 폴더로 이동했습니다.

sqljdbc_8.2 > enu > 인증 > x64

그리고 복사된 "mssql-jdbc_auth-8.2.2.x64.dll"을 C:\Program Files\Java\jdk-12.0.1\bin에 복사했습니다.

나는 다음 Windows 인증 문자열에 대해 동일한 문제에 직면했습니다.

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

기본 인증Scheme=NativeAuthentication이므로 일부 Microsoft DLL에 따라 달라질 수 있습니다.이 문제를 해결하려면 아래와 같이 인증 방식을 NTLM으로 업데이트하세요.

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

메모:제공된 사용자 이름에는 도메인이 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top