sql-server - 当数据库名称不在 url 中时,Microsoft SQL JDBC Spring 启动配置不起作用

标签 sql-server spring azure spring-boot spring-jdbc

我有一个 Spring Boot JDBC 配置 A,如下所示,效果很好,

配置A

spring.datasource.sqlserver.url=jdbc:sqlserver://localhost:1433;database=my-testdb
spring.datasource.sqlserver.user=user_101@server-product1
spring.datasource.sqlserver.password=password_101    
spring.datasource.sqlserver.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
下面的

配置 B 则不然。请注意,url 字符串中不包含数据库名称。数据库名称在单独的行中指定,正如人们所期望的配置一样。

spring.datasource.sqlserver.url=jdbc:sqlserver://localhost:1433
spring.datasource.sqlserver.user=user_101@server-product1
spring.datasource.sqlserver.password=password_101
spring.datasource.sqlserver.database=my-testdb 
spring.datasource.sqlserver.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver

无法弄清楚为什么数据库名称不能在单独的行中指定而必须在 URL 中。谁能提到为什么这不起作用?

其他配置:Spring Boot、sqljdbc41.jar

最佳答案

这就是 Microsoft 的 SQL Server/Azure JDBC 驱动程序的工作原理,数据库名称是 URL 的强制部分,而不是在“数据库”属性中给出。

从技术上讲,这可能与 SQL Server 中的数据库行为相当自治有关,它们每个都有自己的一组目录 View ,您无法在数据库之间自由切换等。

关于sql-server - 当数据库名称不在 url 中时,Microsoft SQL JDBC Spring 启动配置不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41067745/

相关文章:

java - Spring 数据保存与 saveAll 性能

spring - URL tuckey - 出站规则

spring - 整个类的事务注释+不包括单个方法

Azure Active Directory - 允许的 token 受众

azure - 无法将 blob 从一个容器复制到另一个容器

sql - 当执行将选择查询作为联接的查询时,SQL Server 2005返回错误

sql - 在 SQL 中获取 ROWCOUNT 值(不是 @@ROWCOUNT)

sql-server - INSERT INTO 带有 DB 的变量

sql-server - 如何选择跨群体的最高共同值(value)

azure - 如何从azure apim记录jwt属性?