FreeTDS не использует настроенную версию tds

freetds v0.91 - несоответствие версии tds

Я хочу подключиться к Windows SQL Server с FreeBSD в Ubuntu 14.04. FreeTDS устанавливается с помощью apt-get. Я пробовал другую версию TDS с помощью следующих команд:

$ TDSVER=7.0 tsql -H xxx.xxx.xxx.xxx -U xxxx -p 1433 -P xxxxxxx

Файл журнала показывает:

...
net.c:205:Connecting to xxx.xxx.xxx.xxx port 1433 (TDS version 7.0)
net.c:270:tds_open_socket: connect(2) returned "Operation now in progress"
net.c:310:tds_open_socket() succeeded
...

Здесь нет проблем. Но если я изменю TDSVER на 7.4:

$ TDSVER=7.4 tsql -H xxx.xxx.xxx.xxx -U xxxx -p 1433 -P xxxxxxx

Версия TDS становится 4.2?

...
net.c:205:Connecting to xxx.xxx.xxx.xxx port 1433 (TDS version 4.2)
net.c:270:tds_open_socket: connect(2) returned "Operation now in progress"
net.c:310:tds_open_socket() succeeded
...

Вывод команды $ tsql -C является:

Compile-time settings (established with the "configure" script)
                            Version: freetds v0.91
             freetds.conf directory: /etc/freetds
     MS db-lib source compatibility: no
        Sybase binary compatibility: yes
                      Thread safety: yes
                      iconv library: yes
                        TDS version: 4.2
                              iODBC: no
                           unixodbc: yes
              SSPI "trusted" logins: no
                           Kerberos: yes

Я попытался настроить версию TDS в ~/.freetds.conf, результаты совпадают.

freetds v1.00.9 - совпало

Затем я попытался собрать версию, загруженную из git, и установить ее в мою домашнюю папку. Кажется, версия соответствует:

$ TDSVER=7.4 .local/bin/tsql -H xxx.xxx.xxx.xxx -U xxxx -p 1433 -P xxxxxxx

...
iconv.c:384:tds_iconv_open: done
net.c:216:Connecting to xxx.xxx.xxx.xxx port 1433 (TDS version 7.4)
net.c:242:tds_open_socket: connect(2) returned "Operation now in progress"
net.c:343:tds_open_socket() succeeded
...

Выход из $ .local/bin/tsql -C является:

Compile-time settings (established with the "configure" script)
                            Version: freetds v1.00.9
             freetds.conf directory: /home/bgdata/.local/etc
     MS db-lib source compatibility: no
        Sybase binary compatibility: no
                      Thread safety: yes
                      iconv library: yes
                        TDS version: auto
                              iODBC: no
                           unixodbc: yes
              SSPI "trusted" logins: no
                           Kerberos: no
                            OpenSSL: no
                             GnuTLS: no
                               MARS: no

Это ошибка v0.91 или я что-то не так сделал? Благодарю.

1 ответ

Решение

FreeTDS 0.91 не поддерживает TDS версии 7.4. У меня есть запрос на включение, который, я надеюсь, станет более понятным в документации:

https://github.com/FreeTDS/freetds/pull/71/files

  • FreeTDS 1.0+ поддерживает до версии TDS 7.4
  • FreeTDS 0.95 поддерживает до версии TDS 7.3
  • FreeTDS 0.91 поддерживает до версии TDS 7.2

Кроме того, никогда не используйте 8.0 если вы не используете очень старую версию FreeTDS (которой не должно быть в данный момент). Это длинная история, также описанная в документации, но в Интернете есть множество "руководств", рекомендующих ее. Возвращается к версии 7.0 и может создавать проблемы.

Другие вопросы по тегам