繁体   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