Spring Boot连接SQL Server Management Studio配置后仍报错如何解决?
Spring Boot 连接 SQL Server 失败排查修复指南
1 优先排查JDBC URL配置错误(最高频问题)
新版SQL Server JDBC驱动默认要求SSL加密,本地测试时必须添加信任证书参数,同时注意参数名不要写错,正确格式为:jdbc:sqlserver://[服务地址]:[端口];databaseName=[数据库名];encrypt=true;trustServerCertificate=true;
常见错误:将
databaseName写为database、漏加trustServerCertificate=true导致证书校验失败。
2 检查依赖配置正确性
Spring Boot项目无需手动指定驱动版本,直接引入官方适配的依赖即可,Maven配置示例:
<dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</artifactId> <scope>runtime</scope> </dependency>
如果是Spring Boot 3.x版本,请勿使用9.4以下版本的mssql-jdbc驱动,避免版本不兼容问题。
3 验证SQL Server身份验证配置
- 确认SQL Server已开启混合身份验证模式:打开SSMS右键服务器→【属性】→【安全性】→服务器身份验证选择「SQL Server和Windows身份验证模式」,修改后必须重启SQL Server服务生效。
- 确认登录账号已启用、权限正确:SSMS→【安全性】→【登录名】→双击对应账号(如sa),确认账号未禁用,在【用户映射】中为
product数据库分配至少db_owner权限。
4 验证网络与端口连通性
- TCP/IP配置修改后必须重启SQL Server服务才会生效。
- 本地执行命令
telnet 127.0.0.1 1433验证端口连通性:如果进入空白界面说明端口正常,报错则需检查Windows防火墙是否放行1433端口、是否有其他程序占用1433端口。
5 完整配置参考
application.yml 示例
spring: datasource: url: jdbc:sqlserver://127.0.0.1:1433;databaseName=product;encrypt=true;trustServerCertificate=true; username: sa password: 你的SQL Server登录密码 driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
原生JDBC连接测试代码
排除Spring框架影响,可直接运行以下代码测试连通性:
import java.sql.Connection; import java.sql.DriverManager; public class SqlServerConnectionTest { public static void main(String[] args) { String url = "jdbc:sqlserver://127.0.0.1:1433;databaseName=product;encrypt=true;trustServerCertificate=true;"; String username = "sa"; String password = "你的SQL Server登录密码"; try (Connection conn = DriverManager.getConnection(url, username, password)) { System.out.println("SQL Server 连接成功"); } catch (Exception e) { e.printStackTrace(); } } }
根据运行后的报错信息可精准定位问题:比如提示「登录失败」则检查账号密码/权限,提示「连接超时」则检查端口/防火墙,提示「证书不受信任」则检查URL参数是否正确。
内容的提问来源于stack exchange,提问作者Baron
相关产品推荐
相关产品推荐

