如何为SQL服务器构建Google云SQLJDBCURL

How to construct Google Cloud SQL JDBC URL for SQL Server

关于如何在 Cloud SQL 中为 SQL 服务器实例创建 JDBC URL 的最佳文档位于此处:https://github.com/GoogleCloudPlatform/cloud-sql-jdbc-socket-factory

唯一的问题是,没有为 SQL 服务器创建 JDBC URL 的示例或说明。

我已经尝试了一些明显的可能解决方案,none 其中有效 - 例如:

jdbc:sqlserver:///<DATABASE_NAME>;socketFactory=com.google.cloud.sql.sqlserver.SocketFactory;cloudSqlInstance=<INSTANCE_CONNECTION_NAME>;user=<USER_NAME>;password=<PASSWORD>

我在同一个项目中有一个 mysql 服务器,我可以毫无问题地连接到它(在更新 jdbc 驱动程序和 JDBC URL 之后) . SQL 管理员 API 已启用并且 GOOGLE_APPLICATOIN_CREDENTIALS 指向正确的服务帐户。

相关pom.xml

    <dependency>
      <groupId>com.google.cloud.sql</groupId>
      <artifactId>cloud-sql-connector-jdbc-sqlserver</artifactId>
      <version>1.2.0</version>
    </dependency>
    <dependency>
      <groupId>com.microsoft.sqlserver</groupId>
      <artifactId>mssql-jdbc</artifactId>
      <version>8.4.0.jre8</version>
    </dependency>

如果我正确阅读 git 存储库,它实际上看起来 JDBC 对 SQL 服务器的支持刚刚添加到 1.2.0 版本中 - 有没有人能够让这个工作? https://github.com/GoogleCloudPlatform/cloud-sql-jdbc-socket-factory/pull/263

我收到错误

ERROR: The TCP/IP connection to the host /<DATABASE_NAME>, port 1433 has failed. Error: "/<DATABASE_NAME>. Verify the connection properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall."

谢谢!

根本原因是我使用的 SQLServerDriver 版本似乎与 com.google.cloud.sql.sqlserver.SocketFactory 不兼容。我能够切换到按预期工作的 net.sourceforge.jtds.jdbc.Driver。此线程中的更多信息:https://github.com/GoogleCloudPlatform/cloud-sql-jdbc-socket-factory/issues/373