我正在尝试使用ruby 2.2.3上的tiny-tds gem连接到Azure SQL数据库。我安装了freetds-dev
和freetds-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个小时......让我感到困惑的是它总是立即失败,所以这不是暂停的问题。
答案 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。