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

如何从Laravel Homestead Vagrant连接宿主机SQL Server 2017?

排查Homestead内sqlcmd连接宿主机SQL Server的问题

我懂这种卡了一整天的挫败感!咱们一步步来拆解这个连接问题,先从最基础的配置检查开始:

  • 先确认宿主机SQL Server的核心配置

    • 开启远程连接:打开SQL Server配置管理器,找到「SQL Server网络配置」→ 对应实例的「协议」,确保TCP/IP协议是启用状态。接着双击TCP/IP,在「IP地址」标签页拉到最底部,确认「IPAll」的「TCP端口」设置为1433,并且所有相关IP的「已启用」设为「是」。
    • 切换混合身份验证模式:在SQL Server Management Studio里右键服务器→「属性」→「安全性」,选择「SQL Server和Windows身份验证模式」,重启SQL Server服务生效。这一步是确保sa账号能正常登录。
    • 放行防火墙端口:宿主机的Windows防火墙(或第三方防火墙)必须添加入站规则,允许TCP 1433端口的连接请求。
  • 验证虚拟机到宿主机的网络连通性
    在Homestead的终端里先执行:

    ping 10.0.2.2
    

    如果ping不通,说明虚拟机和宿主机的网络链路有问题:

    • 检查Homestead的网络模式:10.0.2.2是NAT模式下宿主机的默认映射地址,如果你把Homestead改成了桥接模式,那应该用宿主机的局域网IP(比如192.168.x.x)来替代10.0.2.2。
  • 修正sqlcmd命令的细节问题

    • 密码如果包含特殊字符(比如!@#$%^&*),一定要用双引号包裹,避免被shell解析错误:
      sqlcmd -S 10.0.2.2,1433 -U sa -P "your_sa_password_here"
      
    • 可以尝试延长超时时间,避免因网络延迟导致失败:
      sqlcmd -S 10.0.2.2,1433 -U sa -P "your_password" -l 30
      
    • 如果你的SQL Server是命名实例(不是默认的MSSQLSERVER),连接字符串需要指定实例名:
      sqlcmd -S 10.0.2.2\YOUR_INSTANCE_NAME,1433 -U sa -P "your_password"
      
  • 最后兜底检查
    重启宿主机的SQL Server服务,再重新尝试连接;也可以在宿主机本地用sqlcmd测试sqlcmd -S localhost,1433 -U sa -P "your_password",先确认本地连接正常,再排查跨虚拟机的问题。

内容的提问来源于stack exchange,提问作者A.C

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:38:31