Pyodbc: ошибка времени ожидания входа - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь подключиться к MS SQL Server, используя pyodbc с удаленного компьютера, на котором работает Ubuntu 16.04.

import pyodbc 

conn = pyodbc.connect(r'DRIVER=ODBC Driver 17 for SQL Server; SERVER=xxxTest-SRV; PORT=51333; DATABASE=TestDB; UID=xxxx; PWD=xxxx;')

Я получаю следующую ошибку:

pyodbc.OperationalError: ('HYT00', '[HYT00] [unixODBC] [Microsoft] [ODBC Драйвер 17 для SQL Server] Истекло время ожидания входа (0) (SQLDriverConnect) ')

Я попытался использовать сервер IP в строке подключения, но все равно не повезло.

Однако я могу подключиться к sqlcmd с терминала
Следующие работы:

sqlcmd -S xxxTest-SRV, 51333 -d TestDB -U xxxx -P xxxx

Я не нашел ни одной проблемы, которая бы дала ответ на мою проблему.

odbcinst.ini

[ODBC Driver 17 for SQL Server]
Description=Microsoft ODBC Driver 17 for SQL Server
Driver=/opt/microsoft/msodbcsql/lib64/libmsodbcsql-17.1.so.1.1
UsageCount=1

Кажется, всегда существует проблема с подключением к MS SQL Server с использованием pyodbc с Linux-машины. Есть ли способ подключения к SQL Server из Python. Буду признателен за помощь в решении этой ошибки. Спасибо.

[UPDATE]

Согласно приведенному ниже ответу, я обновил строку подключения. Но теперь я получаю следующую ошибку:

pyodbc.Error: ('01000', "[01000] [unixODBC] [Driver Manager] Не удается открыть lib '/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.0.so.1.1': file не найден (0) (SQLDriverConnect) ")

My odbcinst.ini Определение драйвера файла:

[ODBC Driver 17 for SQL Server]
Description=Microsoft ODBC Driver 17 for SQL Server
Driver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.0.so.1.1
UsageCount=1

Соединение с MS SQL Server с компьютера с Linux всегда было кошмаром. Подскажите, пожалуйста, какая версия pyodbc, unixODBC и Driver самая стабильная?

Я установил драйвер, следуя этой инструкции Microsoft. Моя pyodbc версия 4.0.23

1 Ответ

0 голосов
/ 26 апреля 2018

Драйверы Microsoft ODBC для SQL Server не используют параметр PORT=. Номер порта, если он есть, добавляется к имени / IP-адресу сервера запятой, например,

SERVER=xxxTest-SRV,51333;
...