TinyTds无法连接到Debian上的azure

时间:2015-10-19 10:25:36

标签: ruby-on-rails sql-server azure azure-sql-database tiny-tds

我正在尝试使用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 page所述,但都没有。

感谢任何帮助。我一直在尝试这个超过5个小时......让我感到困惑的是它总是立即失败,所以这不是暂停的问题。

1 个答案:

答案 0 :(得分:1)

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

我们在自述文件的Using TinyTDS with Azure部分讨论了这个问题。

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