【问题标题】:Connect to SQL Server running on Windows host from a WSL 2/Ubuntu sqlcmd从 WSL 2/Ubuntu sqlcmd 连接到在 Windows 主机上运行的 SQL Server
【发布时间】:2021-03-04 11:14:09
【问题描述】:

我有一台运行 Windows 10、WSL 2 的主机。我的客人是 Ubuntu。

我正在尝试使用sqlcmd 连接到在我的主机上运行的 SQL Server,但我不确定要在连接中使用什么 IP?

我基本上已经从主机 Windows SQL Server 上的 SQL 配置管理器中公开/启用了所有内容,并且正在使用类似这样的命令来尝试连接:

sqlcmd -S 127.0.0.1 -U sa -P pass

Sqlcmd:错误:Microsoft ODBC Driver 17 for SQL Server:登录超时已过期。

【问题讨论】:

    标签: sql-server ubuntu windows-subsystem-for-linux wsl-2


    【解决方案1】:

    启用"Virtual Machine Monitoring" 对我有用。这四个防火墙规则位于入站列表中,名称以“虚拟机监控”开头:

    • 回显请求 (ICMPv4/v6)
    • RPC
    • DCOM 输入
    • NB-会话进入

    默认情况下它们似乎被禁用,一旦我启用它们,我就能够使用 WSL 生成的 resolv.conf 文件中的 IP 地址 ping 主机以及连接到我的主机 sql 服务器服务 --

    cat /etc/resolv.conf
    # This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
    # [network]
    # generateResolvConf = false
    nameserver 1xx.1xx.1xx.1xx
    

    【讨论】:

      【解决方案2】:

      除了使用来自/etc/resolv.conf的IP外,您还必须在Windows防火墙中打开1433端口

      新规则 - 端口 - 下一个 - 特定端口:1433 - 下一个 - 允许 - 下一个 - 下一个 - 名称“WSL2 sql”


      注意:您刚刚向整个世界开放了端口,因此最好将此规则限制为您的 WSL2 IP 地址。双击规则 - 范围 - 远程 IP 广告 - 添加您的 WSL2 地址

      在 windows cmd shell 中查找您的 wsl 主机地址类型 wsl hostname -I

      或者,您可以仅在需要时启用-禁用此规则。

      【讨论】:

        【解决方案3】:

        您是否尝试在 /etc/resolv.conf 上查看 IP?

        尝试使用那个连接,例如:sqlcmd -S 192.168.202.65 -U sa -P pass

        这是因为this

        【讨论】:

          猜你喜欢
          • 2019-06-19
          • 1970-01-01
          • 1970-01-01
          • 2022-11-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-07-16
          相关资源
          最近更新 更多