尝试通过代理使用 SSMS 访问云 SQL 上的 SQL 服务器实例时如何修复 connectex 错误

How to fix connectex error when trying to access SQL Server instance on Cloud SQL using SSMS via Proxy

我想做什么

我正在尝试使用 SQL Server Management Studio (SSMS) 在云 SQL (GCP) 上管理我的 SQL 服务器实例。

我做了什么

我遵循了 Google 云文档 (here) 中的步骤。
我遵循了步骤 1-5(下面的精简版):

  1. 安装云SQL
  2. 运行 gcloud init
  3. 运行gcloud auth login(P.S。我是项目级别的所有者)
  4. 下载并安装 Google Cloud SQL Proxy(按照说明 here
    1. 启用云 SQL 管理员 API
    2. 安装代理客户端(Windows 个人电脑,x64 - 将文件重命名为 cloud_sql_proxy.exe
    3. 确定代理身份验证方法(根据文档 here)。我选择了 Cloud SDK,因为无论如何我都需要在第 1 步中下载它
    4. 跳过(不使用服务帐户身份验证)
    5. 确定代理实例规范(根据文档here)。使用在代理调用 方法中指定的 个实例。
      • 我只有私有 IP,因此默认情况下它将 select 正确的 IP(根据文档 here
    6. 同第5步(下) 5.启动代理。我 运行(在 cmd 中)./cloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:1433(显然用我的实例名称替换 <INSTANCE_CONNECTION_NAME> 部分。

此时,一切似乎都在工作:

Listening on 127.0.0.1:1433 for <INSTANCE_CONNECTION_NAME>
Ready for new connections
New connection for <INSTANCE_CONNECTION_NAME>
New connection for <INSTANCE_CONNECTION_NAME>

现在按照说明 here,我尝试使用 SSMS 连接到数据库实例(127.0.0.1SQL 服务器身份验证sqlserver我的超赞密码)、连接。

我的问题

我现在在 Cloud SDK window 中收到以下错误消息:

couldn't connect to <INSTANCE_CONNECTION_NAME>: dial tcp <PRIVATE_IP>:<PORT>: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
Throttline refreshCfg(<INSTANCE_CONNECTION_NAME>: it was only called XXXs ago

(重复几次)

在 SSMS 中我得到以下提示:

我的问题

如何解决此问题并正确连接到我的数据库实例?

在设置 SQL 服务器实例的连接设置时,我将其更改为 Private IP 并取消选中 Public IP 设置。 Re-enabling Public IP 设置允许我建立连接:

External applications can still connect to the instance through the Cloud SQL Proxy

这间接向我表明 Cloud SQL 代理需要启用 Public IP 选项才能建立连接。