从 WSL 2/Ubuntu sqlcmd 连接到在 Windows 主机上运行的 SQL Server

mar*_*tch 8 sql-server ubuntu windows-subsystem-for-linux wsl-2

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

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

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

sqlcmd -S 127.0.0.1 -U sa -P pass
Run Code Online (Sandbox Code Playgroud)

Sqlcmd:错误:适用于 SQL Server 的 Microsoft ODBC 驱动程序 17:登录超时已过期。

Ale*_*lex 13

  1. 确保启用 SQL Server TCP/IP(在“协议”下的“SQL Server 配置管理器”下)
  2. 在您的连接字符串中,使用来自cat /etc/resolv.conf
  3. 1433在 Windows 防火墙中打开端口。打开“具有高级安全性的 Windows Defender 防火墙” - 右键单击​​“入站规则”。转到新规则 - 端口 - 下一步 - 特定端口:1433 - 下一步 - 允许 - 下一步 - 下一步 - 名称“WSL2 sql”
  4. 断开 Windows 中的所有 VPN 软件(如果有) - 它可能会破坏 WSL2/Windows 网络连接

注意:您刚刚向全世界开放了端口,因此仅在需要时启用-禁用此规则,或仅将此规则限制为您的 WSL2 IP 地址(双击规则 - 范围 - 远程 IP 广告 - 添加您的 WSL2 地址掩码,通常是172.*.*.*。要查找您的 wsl 主机地址,请wsl hostname -IWindows cmd shell 中键入)。使用掩码,而不是确切的地址,因为每次重新启动时IP都会改变(?)