Spring Boot远程连接SQL Server登录失败,pymssql可正常登录求助
我看到你遇到了Spring Boot通过JDBC连接远程SQL Server时的登录失败问题,而且用pymssql能成功登录,这说明数据库的账号、网络连通性本身是没问题的,咱们先从最容易忽略的点开始排查:
1. 首先修复配置文件的拼写错误
你的application.properties里有个明显的笔误:
spring.datasoruce.password=pass
这里的datasoruce少了一个字母c,正确的配置项应该是spring.datasource.password。这个错误会导致Spring Boot无法读取到正确的密码,自然会触发登录失败的异常。
先把这个拼写错误修正,这大概率是问题的核心原因。
2. 其他可能的排查方向(如果修复拼写后仍有问题)
如果修正拼写后还是报错,可以逐一检查以下几点:
JDBC URL的加密参数配置:
部分SQL Server实例默认要求加密连接,pymssql可能会自动处理加密逻辑,但JDBC驱动需要显式配置。可以在URL中添加加密相关参数:spring.datasource.url=jdbc:sqlserver://XXXXXXXXX;databaseName=ABC;integratedSecurity=false;encrypt=true;trustServerCertificate=true其中
trustServerCertificate=true适用于测试环境,生产环境建议配置合法的证书。驱动版本兼容性:
确保你的sqlserver-jdbc驱动版本和目标SQL Server版本匹配。比如SQL Server 2019推荐使用9.x及以上版本的驱动,在pom.xml中确认依赖:<dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</artifactId> <version>12.4.2.jre17</version> <!-- 根据你的JDK版本选择合适版本 --> </dependency>账号权限与认证模式:
虽然pymssql能登录,但可以再确认下:- 该账号是SQL Server认证模式(不是Windows集成认证)
- 账号拥有访问
ABC数据库的权限,且默认数据库设置正确
密码特殊字符转义:
如果密码包含&、=、#这类特殊字符,在application.properties中需要用反斜杠\转义;或者改用application.yml格式,用引号包裹密码:spring: datasource: password: "pass-with-special&chars"端口是否正确:
默认SQL Server端口是1433,如果远程服务器修改了端口,需要在URL中明确指定:spring.datasource.url=jdbc:sqlserver://XXXXXXXXX:1434;databaseName=ABC;integratedSecurity=false
先优先修正拼写错误,测试连接是否恢复正常。如果还有问题,再按上面的步骤逐一排查。
内容的提问来源于stack exchange,提问作者Rohith Reddy




