Подключение к SQL Server, работающему на хосте Windows, с помощью WSL 2 / Ubuntu sqlcmd

#sql-server #ubuntu #windows-subsystem-for-linux #wsl-2

#sql-сервер #ubuntu #windows-subsystem-for-linux #wsl-2

Вопрос:

У меня есть хост под управлением Windows 10, WSL 2. Мой гость — Ubuntu.

Я пытаюсь использовать sqlcmd для подключения к SQL Server, работающему на моем хост-компьютере, но я не уверен, какой IP-адрес использовать для подключения?

Я предоставил / включил в основном все из диспетчера конфигурации SQL на хосте Windows SQL Server и использую подобные команды, чтобы попытаться подключиться:

 sqlcmd -S 127.0.0.1 -U sa -P pass
 

Sqlcmd: Ошибка: драйвер Microsoft ODBC 17 для SQL Server: истек срок ожидания входа.

Ответ №1:

  1. В строке подключения используйте IP-адрес из cat /etc/resolv.conf
  2. откройте 1433 порт в брандмауэре Windows. Перейдите к новому правилу — Port — Next — Specific ports: 1433 — Next — Allow — Next — Next — Name «WSL2 sql»
  3. Отключите программное обеспечение VPN в Windows (если оно есть) — это может помешать сетевому подключению WSL2 / Windows

ПРИМЕЧАНИЕ: Вы только что открыли порт для всего мира, поэтому либо включайте -отключайте это правило только при необходимости, либо ограничьте это правило только вашим IP-адресом WSL2 (дважды щелкните область действия правила — Удаленные IP-объявления — Добавьте свой адрес WSL2. Чтобы найти адрес вашего хоста wsl, введите адрес wsl hostname -I в командной оболочке Windows)

Комментарии:

1. Вы можете открыть порты Windows для заливки WSL с помощью этой команды: New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow

Ответ №2:

Вы пытались посмотреть IP-адрес в /etc/resolv.conf?

Попробуйте подключиться с помощью этого, например: sqlcmd -S 192.168.202.65 -U sa -P pass

Это связано с этим

Ответ №3:

Включение «Мониторинга виртуальной машины» сработало для меня. Эти четыре правила брандмауэра расположены в списке входящих, имена начинаются с «Мониторинг виртуальной машины» для:

  • Эхо-запросы (ICMPv4 / v6)
  • RPC
  • DCOM-In
  • NB-Session-In

По умолчанию они отключены, и как только я их включил, я смог выполнить пинг хоста, а также подключиться к службе sql server моего хоста, используя IP-адрес из сгенерированного WSL файла resolv.conf —

 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