如何从Ruby连接到MS Sql Server

3
我正在尝试从*NIX机器连接到SQL Server 2005数据库:
我有以下配置:Linux 64位
ruby -v ruby 1.8.6(2007-09-24补丁级别111)[x86_64-linux] 重要的gem: dbd-odbc(0.2.4) dbi(0.4.1) active record sql server adapter-作为插件
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上连接。

首先,你在“mac 10.5”上使用的是哪个版本的Ruby?我认为1.8.6可能是问题所在。另外,你使用的Activerecord版本是什么? - Trevoke
1个回答

1

这看起来很接近,而且我已经在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"
)

这里有一个更好的指南:http://wiki.github.com/rails-sqlserver/2000-2005-adapter/platform-installation-ubuntu-2。 - Nathan L Smith
你好,我正在尝试使用你们的示例,但是我遇到了这个错误 S1000 (0) [unixODBC][FreeTDS][SQL Server]无法连接到数据源 - Steven

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接