我有麻煩連接Ruby到Microsoft SQL Server。我正在運行Mac OS X,但目標環境是Ubuntu Linux。Ruby連接到SQL Server
這是我已經試過:
我再有這些文件/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')
我也得到了類似的錯誤。
有什麼建議嗎?我覺得我非常接近,但不知道接下來要嘗試排除此問題。
`我可以確認我的服務器是在線和端口是開放的(通過telnet和yougetsignal.com端口檢查)。「對不起,我無法回答你的問題。但是,您應該知道將SQL Server暴露給Internet可能會導致安全問題。各種機器人掃描SQL Server並嘗試連接/攻擊它。 – 2011-01-13 05:32:42
你必須使用MRI嗎?你不能使用JRuby和JDBC嗎? – Luke 2011-01-13 07:09:43