提问人:mattsmith5 提问时间:11/12/2023 更新时间:11/12/2023 访问量:30
将 Spring Boot JDBCTemplate 连接到 Azure SQL,连接字符串和 TCP/IP 问题
Connect Spring Boot JDBCTemplate to Azure SQL, Issues with Connection String and TCP/IP
问:
我似乎无法使用 JDBCTemplate 将我的 Java Spring Boot 项目连接到 Azure SQL。我不断收到错误,无论是通过自动连线、连接字符串还是选项 2) 手动设置数据源。如何解决此问题? 但是,这两个选项都适用于我计算机上的 localhost sql 数据库。
错误:与主机的 TCP/IP 连接 tcp:food-server.database.windows.net,端口 1433 出现故障。 错误:“tcp:food-server.database.windows.net。验证 连接属性。确保 SQL Server 的实例是 在主机上运行并在端口接受 TCP/IP 连接。做 确保与端口的 TCP 连接未被防火墙阻止。
选项 1) 在 application.properties 文件中带有 connectionString,不起作用@Autowired
spring.datasource.url= jdbc:sqlserver://tcp:food-server.database.windows.net,1433;encrypt=true;trustServerCertificate=true;databaseName=Test
spring.datasource.username=sauser
spring.datasource.password=password12345*
选项 2) 使用 DataSource 配置 Bean,当前也不起作用
@Configuration
public class ServerConfiguration {
@Bean
public DataSource getDataSource() {
SQLServerDataSource ds = new SQLServerDataSource();
ds.setUser("sauser");
ds.setPassword("password12345*");
ds.setServerName("tcp:food-server.database.windows.net");
ds.setPortNumber(1433);
ds.setTrustServerCertificate(true);
ds.setDatabaseName("test");
return ds;
}
@Bean
public NamedParameterJdbcTemplate namedParameterJdbcTemplate() {
return new NamedParameterJdbcTemplate(getDataSource());
}
Azure IP 安全设置:
我还确保允许我的 IP 地址在 Azure SQL 门户、数据库、设置防火墙中
答:
与主机 tcp:food-server.database.windows.net 端口 1433 的 TCP/IP 连接失败。错误:“tcp:food-server.database.windows.net。验证连接属性。确保 SQL Server 实例正在主机上运行,并在端口上接受 TCP/IP 连接。确保与端口的 TCP 连接未被防火墙阻止。
正如@tgdavies所评论的,您提供的 URL 格式不正确,这可能是您收到此错误的原因。“tcp:应删除主机名中的”URL。您可以按以下格式提供 URL:
spring.datasource.url= jdbc:sqlserver://<serverName>.database.windows.net,1433;encrypt=true;trustServerCertificate=true;databaseName=<databaseName>
通过执行此操作,您应该能够成功连接到数据库。有关详细信息,可以参考 MS 文档,了解如何准备配置文件以连接到 Azure SQL 数据库。
评论
tcp:
jdbc:sqlserver://$AZ_DATABASE_NAME.database.windows.net:1433;
tcp: