You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Spring Boot远程连接SQL Server登录失败,pymssql可正常登录求助

解决Spring Boot连接SQL Server登录失败的问题

我看到你遇到了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

火山引擎 最新活动