Play框架Java项目无法连接Azure SQL Server数据库问题求助
可行解决建议
- 修正用户名格式:Azure SQL 要求登录用户名必须采用
{用户名}@{SQL服务器名称}的格式,比如你的服务器名称是par-sql-server,用户名为root,则username字段应填写为root@par-sql-server,仅填写纯用户名会导致认证失败触发连接超时,这是最常见的配置错误点。 - 补全JDBC连接参数:在
db.default.url的末尾追加;sslProtocol=TLSv1.2,明确指定TLS 1.2协议,避免低版本JDK或JDBC驱动默认使用低版本TLS被Azure SQL拦截,修改后的url参考:
url="jdbc:sqlserver://server-name.database.windows.net:1433;database=database-name;sslProtocol=TLSv1.2"
- 升级JDBC驱动版本:检查项目依赖的
com.microsoft.sqlserver:mssql-jdbc版本,建议升级到7.4及以上的稳定版本,旧版本驱动对Azure SQL的TLS、加密策略兼容性不足,会引发连接异常。 - 调整Hikari连接池配置:在
db.default下新增连接池校验参数,避免无效连接被复用:
db.default.hikaricp { connectionTestQuery = "SELECT 1" connectionTimeout = 60000 validationTimeout = 5000 }
- 排查部署环境网络限制:如果你的项目是部署到服务器而非本地运行,先在部署环境执行端口连通性测试:
执行telnet par-sql-server.database.windows.net 1433或nc -zv par-sql-server.database.windows.net 1433,如果端口连通失败,说明部署环境的出站防火墙、云服务商安全组或网络运营商拦截了1433端口的出站请求,需要联系运维开放对应端口。 - 核对Azure SQL防火墙规则:如果项目部署在非本地环境,需要将部署服务器的公网IP添加到Azure SQL的防火墙白名单中;如果项目部署在Azure云服务内,可开启Azure SQL防火墙的允许Azure服务和资源访问此服务器开关,无需单独配置IP白名单。
内容的提问来源于stack exchange,提问作者Jonio
相关产品推荐
相关产品推荐

