Spring Boot 3.3.0通过Windows认证连接非1433端口SQL Server问题
问题解决方案
一、所需额外依赖检查
你当前已添加的Spring Data JDBC和MS SQL Server Driver是核心依赖,但Windows认证(integratedSecurity=true)需要额外添加mssql-jdbc-auth依赖——官方mssql-jdbc包本身不包含Windows身份验证所需的本地库(比如Windows下的sqljdbc_auth.dll),缺少它会导致认证失败。
Maven依赖配置
<dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc-auth</artifactId> <version>12.6.0.jre17</version> <!-- 适配Spring Boot 3.3.0的JDK17环境 --> <scope>runtime</scope> </dependency>
Gradle依赖配置
runtimeOnly 'com.microsoft.sqlserver:mssql-jdbc-auth:12.6.0.jre17'
二、连接失败的排查与修复步骤
1. 验证本地库加载
添加mssql-jdbc-auth后,Windows环境下IDE通常会自动将sqljdbc_auth.dll加入JVM库路径;如果仍报错,可手动从依赖jar包中提取dll文件,放到JDK的bin目录,或通过JVM参数指定路径:-Djava.library.path=path/to/dll。
2. 检查服务器连通性
- 确认
myServer是正确的服务器名称/IP,用ping myServer测试连通性; - 验证端口12345是否开放,可使用
telnet myServer 12345或端口扫描工具排查防火墙拦截问题。
3. 补充数据源配置(可选但建议)
在application.properties中明确指定驱动类,避免Spring Boot自动检测异常:
spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver spring.datasource.url=jdbc:sqlserver://myServer:12345;databaseName=myDb;integratedSecurity=true
注意:Windows认证模式下无需配置spring.datasource.username和spring.datasource.password。
4. 权限验证
确保运行Spring Boot程序的Windows用户,拥有访问目标SQL Server数据库myDb的权限(可在SQL Server Management Studio中检查用户映射)。
5. 查看详细异常日志
开启Debug级日志定位具体问题,在application.properties中添加:
logging.level.com.zaxxer.hikari=DEBUG logging.level.org.springframework.jdbc=DEBUG
根据日志中的具体异常(如“找不到sqljdbc_auth.dll”“拒绝访问”“连接超时”)针对性解决。
内容的提问来源于stack exchange,提问作者faujong
相关产品推荐
相关产品推荐

