Какой самый простой способ проверить подключение сервера Linux (например, Ubuntu 18.04) к удаленному экземпляру Microsoft SQL Server 2017?
Я думаю, что самым простым было бы попытаться подключиться к серверу MS SQL через командную строку:
$ telnet <server-name-or-ip> 1433
Если подключение прошло успешно, экран погаснет, иначе вы увидите что-то вроде «Подключение к server-name-or-ip ... Не удалось открыть соединение с хостом, на порту 1433: Ошибка подключения».
На удаленном экземпляре Microsoft SQL Server: убедитесь, что порт TCP 1433 открыт в брандмауэре.
На экземпляре сервера Ubuntu установите mssql-tools, как описано здесь: https://www.microsoft.com/en-us/sql-server/developer-get-started/php/ubuntu
sudo su
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
exit
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install msodbcsql17 mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
sudo apt-get install unixodbc-dev
Затем вы можете запустить тестовый запрос - вам будет предложено ввести пароль:
[user@lnx01 ~ $] sqlcmd -S <remoteip> -U <user> -p -Q "SELECT @@VERSION"
Password:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Microsoft SQL Server 2017 (RTM) - 14.0.1000.169 (X64)
Aug 22 2017 17:04:49
Copyright (C) 2017 Microsoft Corporation
Express Edition (64-bit) on Windows Server 2016 Standard 10.0 <X64> (Build 14393: )
(1 rows affected)
Другой простой способ - использовать nc
(netcat
) из командной строки:
nc -zv YOUR_SERVER_NAME_OR_IP 1433
Если соединение может быть установлено, вы должны увидеть такой вывод:
Connection to YOUR_SQL_SERVER_NAME_OR_IP 1433 port [tcp/ms-sql-s] succeeded!
В случае сбоя вы получаете разные сообщения об ошибках в зависимости от причины:
nc: getaddrinfo for host "NON_EXISTING_SQL_SERVER_NAME_OR_IP" port 1433: Name or service not known
или, может быть...
nc: connect to YOUR_SQL_SERVER_NAME_OR_IP port 143 (tcp) failed: Connection timed out
Из nc
страница руководства, z
и v
варианты:
-z Specifies that nc should just scan for listening daemons, without sending any
data to them. It is an error to use this option in conjunction with the -l
option.
-v Have nc give more verbose output.