You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GCP同VPC下SQL Server与Windows VM连接及动态IP问题咨询

GCP同一VPC内自建SQL Server与Windows VM连接问题

问题描述

我是GCP新手,正尝试搭建自建SQL Server与Windows VM的连接,二者位于GCP同一默认公网VPC中。目前通过将Windows VM的动态外部IP添加到SQL Server白名单,可在VM内用Microsoft SQL Server Management Studio连接,但IP动态变化需反复手动添加,同时使用sqlcmd命令行工具连接时出现登录失败错误。

已做排查

  1. 已配置TCP 1433端口的防火墙规则;
  2. 未添加白名单前,Windows VM可ping通SQL Server的连接IP;
  3. 尝试使用以下sqlcmd命令连接:
sqlcmd -S <server_address> -U <username> -P <password> 

sqlcmd -S <server_address> -U <username> -P <password> -d <database_name> -P <port_number>

出现错误:

sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Login failed for user 'username'..

解决方案

一、动态IP白名单问题解决

  1. 给Windows VM分配静态外部IP
    在GCP控制台找到目标Windows VM实例,进入编辑页面,将外部IP从“临时”改为“静态”,分配固定IP后,只需将该静态IP添加一次到SQL Server白名单即可。

  2. 改用VPC内部IP连接(推荐)
    由于二者在同一VPC,直接使用SQL Server的内部IP(或主机名)进行连接,将Windows VM的内部IP(或整个VPC子网网段)添加到SQL Server白名单。这种方式无需依赖外部IP,连接更稳定且安全,避免公网传输风险。

  3. 白名单VPC子网网段
    若有多个VM需要连接,可将VPC的子网IP段(例如默认VPC的10.128.0.0/9)添加到SQL Server白名单,同一子网内的所有VM均可直接连接,无需单独配置每个IP。

二、sqlcmd登录失败问题解决

  1. 修正命令参数错误
    第二个命令中重复使用了-P(密码参数),端口参数应为小写-p,正确的命令格式如下:

    # 方式1:地址和端口用逗号分隔
    sqlcmd -S <server_address>,<port_number> -U <username> -P <password> -d <database_name>
    
    # 方式2:单独指定端口
    sqlcmd -S <server_address> -p <port_number> -U <username> -P <password> -d <database_name>
    
  2. 验证账号权限与身份验证模式

    • 确认SQL Server账号<username>已开启远程登录权限,且密码输入正确,账号未被锁定;
    • 检查SQL Server的身份验证模式,确保已开启混合身份验证模式(SQL Server和Windows身份验证),若仅启用Windows身份验证,SQL账号无法登录。

内容的提问来源于stack exchange,提问作者Yuu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 09:45:13