1

我正在尝试使用 ruby​​ 2.2.3 上的 tiny-tds gem 连接到 Azure SQL 数据库。我安装了freetds-devfreetds-bin一切似乎都在那里工作得很好。

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

和做

TDSVER=7.1 tsql -U xxxxx -P xxxxx -H mydatabase.database.windows.net -p 1433

连接得很好(我得到一个提示)。

我安装了 tiny_tds gem:

/home/avril14th/.rvm/gems/ruby-2.2.3/gems/tiny_tds-0.7.0

并尝试连接

avril14th@avril14th:~/src/white2$ pry
[1] pry(main)> require 'tiny_tds'
=> true
[2] pry(main)> client = TinyTds::Client.new username: 'xxxx', password: 'xxxxx', host: 'xxxxx.database.windows.net', :azure => true
TinyTds::Error: Adaptive Server connection failed

我已经尝试了很多其他参数组合,如 tiny_tds github 页面中所述,但没有一个有效。

任何帮助表示赞赏。我已经尝试了 5 个多小时了......让我感到困惑的是,它总是立即失败,所以这不是超时的问题。

4

1 回答 1

1

这与 TinyTDS 的版本无关,它支持 Azure 有一段时间了。问题是如何编译 FreeTDS。它缺少使用 Azure 所需的 OpenSSL 支持进行编译。完成后,您将OpenSSL: yes在上面的输出中看到tsql -C

我们在自述文件的将 TinyTDS 与 Azure 结合使用部分中讨论了这一点。

补充:主分支中的 TinyTDS 1.0 可以连接的原因是该版本在本地编译 OpenSSL 和 FreeTDS。这是一项尚未准备好供公众使用的新功能。根据您对系统级 FreeTDS 的需求和使用情况,使用或...但答案仍然正确,您无法将 v0.7 用于 Azure 的原因是您的系统 FreeTDS 没有链接 OpenSSL。

于 2015-10-20T00:53:43.100 回答