FreeTDS 不使用配置的 tds 版本

FreeTDS doesn't use configured tds version

freetds v0.91 - tds 版本不匹配

我想在 Ubuntu 14.04 上使用 FreeBSD 连接到 Windows SQL 服务器。 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

我试过在~/.freetds.conf配置tds版本,结果一样

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 的错误还是我做错了什么? 谢谢。

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(你应该t 在这一点上)。这是一个很长的故事,也包含在文档中,但是网络上有很多 "guides" 推荐它。它恢复到版本 7.0 并且可能会产生问题。