2011-01-13 139 views
12

我有麻煩連接Ruby到Microsoft SQL Server。我正在運行Mac OS X,但目標環境是Ubuntu Linux。Ruby連接到SQL Server

這是我已經試過:

  • 安裝unixODBC
  • 安裝FreeTDS
    • 使用的選項--with-unixodbc=/usr/local/etc--with-tdsver=8.0

我再有這些文件/usr/local/etc

  • odbc.ini
  • odbcinst.ini
  • freetds.conf

我在odbcinst.ini文件添加到freetds的駕駛員參考,這樣我的ODBC驅動程序文件:

; 
; odbcinst.ini 
; 
; 
[FreeTDS] 
Driver = /usr/local/lib/libtdsodbc.so 

然後我配置在freetds.conf文件服務器這樣的:

# Aries database server (SQL Server 2008) 
[aries-db1] 
     host = xx.xx.xx.xx 
     port = 1433 
     tds version = 8.0 

最後,我添加了ODBC DSN在odbc.ini文件是這樣的:

[aries-db1] 
Driver  = FreeTDS 
Description = ODBC Connection via FreeTDS 
Trace  = 1 
Servername = aries-db1 
Database = MY_DB 
UID   = user1 
PWD   = pass1 

我可以確認我的服務器處於聯機狀態,端口是開放的(通過telnet & yougetsignal.com端口檢查)。

作爲一個測試,我這樣做:

tsql -S aries-db1 -U user1 -P pass1 

,它似乎連接就好了。傳入無效值會導致預期的錯誤。

所以最後我的問題:

如何擴展這個到Ruby?到目前爲止,我沒有嘗試過任何方法。我想續集是這樣的:

require 'sequel' 
Sequel.connect('aries-db1')['select * from foo'].all 

我也得到類似這樣的錯誤:

Sequel::DatabaseConnectionError: ODBC::Error: S1000 (0) [unixODBC][FreeTDS][SQL Server]Unable to connect to data source 

告訴我,這是正確的找到我的驅動程序配置,但由於某種原因無法連接。

我也試過DBI這樣的:

DBI.connect('DBI:ODBC:aries-db1') 

我也得到了類似的錯誤。

有什麼建議嗎?我覺得我非常接近,但不知道接下來要嘗試排除此問題。

+1

`我可以確認我的服務器是在線和端口是開放的(通過telnet和yougetsignal.com端口檢查)。「對不起,我無法回答你的問題。但是,您應該知道將SQL Server暴露給Internet可能會導致安全問題。各種機器人掃描SQL Server並嘗試連接/攻擊它。 – 2011-01-13 05:32:42

+0

你必須使用MRI嗎?你不能使用JRuby和JDBC嗎? – Luke 2011-01-13 07:09:43

回答