MSSQL JDBC 드라이버 Java 8 지원 문제 해결

SQL Server JDBC 드라이버 버전 호환성 문제와 해결 방법입니다. "SQL Server version 8 is not supported" 오류 대응법을 다룹니다.

1. 오류 원인

오류 메시지:
"SQL Server version 8 is not supported by this driver"

원인:
- 구 버전 sqljdbc 드라이버 사용
- Java 8과 호환되지 않는 드라이버
- SQL Server 버전과 드라이버 불일치

2. JDBC 드라이버 버전 호환성

드라이버Java 버전SQL Server
mssql-jdbc 12.xJava 8, 11, 17, 212014 이상
mssql-jdbc 11.xJava 8, 11, 172014 이상
mssql-jdbc 9.xJava 8, 11, 152012 이상
sqljdbc4.jarJava 6, 72005 이상
sqljdbc.jarJava 5구버전

3. Maven 의존성 (권장)

<!-- Java 8 이상 호환 -->
<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>12.4.2.jre8</version>
</dependency>

<!-- Java 11 이상인 경우 -->
<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>12.4.2.jre11</version>
</dependency>

4. Gradle 의존성

// Java 8
implementation "com.microsoft.sqlserver:mssql-jdbc:12.4.2.jre8"

// Java 11+
implementation "com.microsoft.sqlserver:mssql-jdbc:12.4.2.jre11"

5. 수동 JAR 다운로드

다운로드 위치:
https://docs.microsoft.com/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server

파일명 예시:
- mssql-jdbc-12.4.2.jre8.jar (Java 8용)
- mssql-jdbc-12.4.2.jre11.jar (Java 11용)

6. 연결 문자열 예시

// 최신 드라이버
String url = "jdbc:sqlserver://localhost:1433;databaseName=mydb;encrypt=true;trustServerCertificate=true";

// 드라이버 클래스
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

// 연결
Connection conn = DriverManager.getConnection(url, "user", "password");

7. Spring Boot 설정

# application.properties
spring.datasource.url=jdbc:sqlserver://localhost:1433;databaseName=mydb;encrypt=true;trustServerCertificate=true
spring.datasource.username=sa
spring.datasource.password=password
spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver

8. 문제 해결 체크리스트

1. Java 버전 확인
   java -version

2. 현재 JDBC 드라이버 확인
   - pom.xml 또는 build.gradle 확인
   - lib 폴더 내 jar 파일 확인

3. 드라이버 업그레이드
   - 구 sqljdbc4.jar 삭제
   - mssql-jdbc-xx.jreN.jar로 교체

4. 빌드 도구 캐시 정리
   mvn clean install
   gradle clean build

주의사항

  • jre8/jre11 suffix가 Java 버전에 맞아야 함
  • SQL Server 2012 미만은 최신 드라이버 미지원
  • encrypt=true 시 인증서 설정 필요할 수 있음
  • Azure SQL은 최신 드라이버 필수