Назад | Перейти на главную страницу

Проблема с подключением к SQL Server 2005 через FreeTDS на FreeBSD

Я пытаюсь подключиться к 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: неверный вход в систему.

Это может произойти, если верно одно из следующих условий:

  • Файл freetds.conf не может быть найден
  • Версия tds в файле freetds.conf не 7.0 или 4.2
  • любой набор символов указан в freetds.conf
  • нераспознанный набор символов передается в метод _mssql.connect () или pymssql.connect ().

Сообщение «Неверный вход в систему» ​​после этой ошибки является ложным, реальные сообщения «Неверный вход в систему» ​​имеют код = 18456 и серьезность = 14.

ссылка: http://pymssql.sourceforge.net/faq.php

В итоге я выполнил инструкции здесь, и теперь все работает отлично:

http://kipb7.wordpress.com/2008/06/12/pyodbc-unixodbc-freetds-config/