2015-10-19 28 views
1

我正尝试使用ruby 2.2.3上的tiny-tds gem连接到Azure SQL数据库。我安装了freetds-devfreetds-bin,一切似乎都很好。TinyTds无法在Debian上连接到天蓝色

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宝石:

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

,并试图连接

[email protected]:~/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

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

我们在自述文件的Using TinyTDS with Azure部分讨论了这一点。

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

+0

那么,就像上面显示的那样,我在'tsql -C'中没有'OpenSSL:yes',但是我用TinyTds连接到Azure就好了。怎么会这样? – muichkine

+0

@muichkine - 你现在能够连接到你的数据库吗? –

+0

@AndreaLam是的。我在github(1.0.0.beta1)上使用了TinyTds的gem master,而不是最新发布的版本(0.7)。 – muichkine