簡體   English   中英

如何從ruby連接到MS Sql Server

[英]How to connect from ruby to MS Sql Server

我正在嘗試從* NIX機器連接到sql server 2005數據庫:

我有以下配置:Linux 64bit

ruby -v ruby​​ 1.8.6(2007-09-24 patchlevel 111)[x86_64-linux]重要的寶石:dbd-odbc(0.2.4)dbi(0.4.1)活動記錄sql server adapter - as plugin

ruby-odbc 0.9996(沒有任何選項安裝。)安裝了unixODBC freeTDS

cat /etc/odbcinst.ini

  [FreeTDS]
     Description     = TDS driver (Sybase/MS SQL)
     Driver          = /usr/lib/libtdsodbc.so
     Setup           = /usr/lib/odbc/libtdsS.so
     CPTimeout       =
     CPReuse         =
     FileUsage       = 1

DSN:

DRIVER=FreeTDS;TDS_Version=8.0;SERVER=XXXX;DATABASE=XXX;Port=1433;uid=XXX;pwd=XXXX;"

要么

DRIVER=/usr/lib/libtdsodbc.so;TDS_Version=8.0;SERVER=XXXX;DATABASE=XXX;Port=1433;uid=XXX;pwd=XXXX;"

我收到以下錯誤:

>>ActiveRecord::Base.sqlserver_connection({"mode"=>"ODBC", "adapter"=>"sqlserver", "dsn"=>my_dns)
DBI::DatabaseError: IM002 (0) [unixODBC][Driver Manager]Data source name not found, and no default driver specified
    from /usr/lib/ruby/1.8/DBD/ODBC/ODBC.rb:95:in `connect'
    from /usr/lib/ruby/1.8/dbi.rb:424:in `connect'
    from /usr/lib/ruby/1.8/dbi.rb:215:in `connect'
    from /opt/ublip/rails/current/vendor/plugins/activerecord-sqlserver-adapter/lib/active_record/connection_adapters/sqlserver_adapter.rb:47:in `sqlserver_connection'

看起來ODBC無法找到合適的ODBC驅動程序,但我不知道為什么。

我遇到了/usr/lib/libtdsodbc.so的問題,它在默認的debian軟件包free-tds dev中是空的,但我解決了它,刪除了破壞的軟件包並從源代碼安裝。

會不會有任何想法!

注意:我總是在mac 10.5上使用相同的步驟進行連接

這看起來很接近,我已經得到了相同類型的設置來使用Ubuntu 8.04(使用Ruby 1.8.6。)因為這是在Debian上,它應該是類似的。

應安裝這些軟件包:unixodbc unixodbc-dev freetds-dev libdbd-odbc-ruby tdsodbc

/etc/odbcinst.ini應該有這樣的東西:

[FreeTDS]
Description = FreeTDS unixODBC Driver
Driver = /usr/lib/odbc/libtdsodbc.so
Setup = /usr/lib/odbc/libtdsodbc.so
UsageCount = 1

和/etc/freetds/freetds.conf :(其中XXX是數據庫名稱,NNN ...是服務器的IP):

[XXX]
  host = NNN.NNN.NNN.NNN
  tds version = 8.0
  client charset = UTF-8
  text size = 262144
  port = 1433

然后連接:

ActiveRecord::Base.sqlserver_connection({"mode"=>"ODBC", 
  "adapter"=>"sqlserver", 
  "dsn"=>"DRIVER=FreeTDS;SERVERNAME=XXX;DATABASE=XXX;uid=XXX;pwd=XXX"
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM