Я пытаюсь подключиться к SQL Server 2005 с сервера FreeBSD с помощью следующей команды:
tsql -H DEV -p 1433 -U ****
Это приводит к следующему сообщению об ошибке:
locale is "C"
locale charset is "US-ASCII"
Password:
Msg 20004, Level 9, State 0, Server OpenClient, Line 0
Read from SQL server failed.
Msg 20014, Level 9, State 0, Server OpenClient, Line 0
Login incorrect.
There was a problem connecting to the server
Поскольку сообщение об ошибке сообщает «Неправильный вход», моим первым шагом было убедиться, что я действительно ввожу правильное имя пользователя и пароль. Это логин SQL Server (т.е. не аутентификация Windows), и я убедился, что он правильно вводится с учетом регистра. Обратите внимание, что я могу без проблем подключиться, используя тот же логин из клиента Windows.
Следующим моим шагом было выгрузить лог из FreeTDS:
util.c:288:Starting log file for FreeTDS 0.64
on 2011-04-12 16:29:57 with debug flags 0x4fff.
iconv.c:195:names for ISO-8859-1: ISO-8859-1
iconv.c:195:names for UTF-8: UTF-8
iconv.c:195:names for UCS-2LE: UCS-2LE
iconv.c:195:names for UCS-2BE: UCS-2BE
iconv.c:361:iconv to convert client-side data to the "US-ASCII" character set
iconv.c:514:tds_iconv_info_init: converting "US-ASCII"->"UCS-2LE"
net.c:168:Connecting to 10.5.5.226 port 1433.
net.c:673:Sending packet
...snipped...
net.c:673:Sending packet
...snipped...
token.c:310:tds_process_login_tokens()
util.c:119:Changing query state from IDLE to DEAD
token.c:2252:tds_client_msg: #20004: "Read from SQL server failed.". Connection state is now 4.
token.c:314:looking for login token, got 0()
token.c:105:tds_process_default_tokens() marker is 0()
token.c:108:leaving tds_process_default_tokens() connection dead
util.c:119:Changing query state from DEAD to DEAD
token.c:2252:tds_client_msg: #20014: "Login incorrect.". Connection state is now 4.
mem.c:519:tds_free_all_results()
Еще я проверил, что экземпляр SQL Server принимает удаленные подключения через TCP / IP. Я также могу подключиться по telnet к SQL Server через порт 1433 с машины FreeBSD, так что, похоже, нет общей проблемы с подключением.
Итак, на данный момент я мертв в воде. Мы будем очень благодарны за любую помощь в диагностике этих сообщений об ошибках или предложении других способов попробовать.
Появляется ошибка «Сообщение об ошибке DB-Lib 20004, уровень серьезности 9: сбой при чтении с сервера SQL».
В Linux / * nix вы можете столкнуться со следующим поведением: import _mssql c = _mssql.connect ('hostname: portnumber', 'user', 'pass') Traceback (последний вызов последнего): файл "", строка 1, в _mssql.DatabaseException: сообщение об ошибке DB-Lib 20004, уровень серьезности 9: Ошибка чтения с сервера SQL. Сообщение об ошибке DB-Lib 20014, уровень серьезности 9: неверный вход в систему.
Это может произойти, если верно одно из следующих условий:
Сообщение «Неверный вход в систему» после этой ошибки является ложным, реальные сообщения «Неверный вход в систему» имеют код = 18456 и серьезность = 14.
В итоге я выполнил инструкции здесь, и теперь все работает отлично:
http://kipb7.wordpress.com/2008/06/12/pyodbc-unixodbc-freetds-config/