Не удается подключиться к экземпляру SQL Server через ODBC FreeTDS - PullRequest
0 голосов
/ 04 сентября 2018

Я пытаюсь подключиться к Microsoft SQL Server

Я использую pyodbc с FreeTDS.

Мой сценарий:

import pyodbc
cnxn = pyodbc.connect(
    'DRIVER={FreeTDS};SERVER=myServerAdress;INSTANCE =myInstanceName;PORT=myPortNumber;DATABASE=myDatabasename;UID=myUserName;PWD=myPassword')

cursor = cnxn.cursor()

Сервер найден, но я получаю сообщение об ошибке:

pyodbc.ProgrammingError: ('42000', "[42000] [unixODBC][FreeTDS][SQL Server]Fehler bei der Anmeldung für den Benutzer 'myUserName'. (18456) (SQLDriverConnect)")

Я думаю, что переведенное сообщение об ошибке:

Fehler bei der Anmeldung für den Benutzer 'myUserName' = Ошибка входа для пользователя "myUserName".

Поэтому я подумал, что имя пользователя или пароль были неправильными. Но соединение с теми же учетными данными через tsql работает нормально.

tsql -S MyServerDSN -U myUsername -P myPassword

с

[MyServer]
host = myServername
instance = myInstanceName

отлично работает, и я могу выбрать myDatabaseName и получить результаты.

1 Ответ

0 голосов
/ 04 сентября 2018

Внимательно прочитайте документацию об атрибутах соединения ODBC FreeTDS . Атрибут INSTANCE= отсутствует. Это говорит

Чтобы указать экземпляр Microsoft SQL Server, используйте форму server\instance.

Это работает для меня:

cnxn_str = (
    r'DRIVER=FreeTDS;'
    r'SERVER=192.168.1.128\SQLEXPRESS;'
    r'DATABASE=myDb;'
    r'UID=sa;PWD=whatever;'
)
cnxn = pyodbc.connect(cnxn_str)

Обратите внимание, что вы должны указать имя экземпляра или номер порта, а не оба.

...