sqlcmd работает в CMD, а не в bash - PullRequest
0 голосов
/ 27 ноября 2018

У меня довольно много проблем с установкой драйверов MSSQL в Ubuntu.Я следовал следующему учебнику , чтобы заставить sqlcmd работать в Ubuntu 16.04.

# In CMD:
sqlcmd -S my_server_name -U my_username -P my_password -d my_database
1> select name from sys.databases
2> go

После установки того же инструмента в Ubuntu, похоже, он работает, но время ожидания при попыткедля подключения к той же базе данных:

# In Ubuntu bash
sqlcmd -S my_server_name -U my_username -P my_password -d my_database
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Login timeout expired.
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : TCP Provider: Error code 0x2AFA.
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online..

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

есть предложения?

1 Ответ

0 голосов
/ 27 ноября 2018

Я исправил проблему!

1.Установите драйверы MSSQL в Ubuntu

. Следуйте этой инструкции .

2.Убедитесь, что ваш порт в базе данных является статическим

Следуйте этому руководству для настройки статического порта.

3.Определите IP-адрес вашей базы данных

Мне пришлось вызвать следующий код в базе данных, чтобы получить IP-адрес: local_net_address.

SELECT  
+    CONNECTIONPROPERTY('net_transport') AS net_transport,
+             CONNECTIONPROPERTY('protocol_type') AS protocol_type,
+             CONNECTIONPROPERTY('auth_scheme') AS auth_scheme,
+             CONNECTIONPROPERTY('local_net_address') AS local_net_address,
+             CONNECTIONPROPERTY('local_tcp_port') AS local_tcp_port,
+             CONNECTIONPROPERTY('client_net_address') AS client_net_address

4.Подключение к базе данных (в Ubuntu bash)

Вот два примера с netcat и sqlcmd.

# Using MSSQL tool
sqlcmd -S my_server_ip_adress//my_server_name,my_port -U my_username -P my_password -d my_database

# Using netcat
nc -z -v -w5 my_server_ip_adress my_port
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...