我正在尝试在 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 个多小时了...令我困惑的是它总是立即失败,所以这不是超时问题。
最佳答案
这与TinyTDS的版本无关,它已经支持Azure一段时间了。问题在于 FreeTDS 是如何编译的。它缺乏 Azure 所需的 OpenSSL 支持编译。完成后,您将在上面 tsql -C
的输出中看到 OpenSSL: yes
。
我们在 Using TinyTDS with Azure 中讨论了这一点自述文件部分。
添加: master 分支中的 TinyTDS 1.0 能够连接的原因是该版本在本地编译了 OpenSSL 和 FreeTDS。这是一项新功能,尚未准备好供公众使用。根据您的需求和系统级 FreeTDS 的使用情况,使用或...但答案仍然正确,您无法将 v0.7 用于 Azure 的原因是您的系统 FreeTDS 没有链接 OpenSSL。
关于ruby-on-rails - TinyTds 无法连接到 Debian 上的 azure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33212066/