Sql server 通过实际技术从Mac连接到SQL Server';s ODBC驱动程序

Sql server 通过实际技术从Mac连接到SQL Server';s ODBC驱动程序,sql-server,ruby,macos,odbc,Sql Server,Ruby,Macos,Odbc,有人使用实际的技术成功地从64位Mac OS X 10.6(Snow Leopard)连接到SQL Server吗?我对使用iODBC Unix驱动程序不感兴趣 对于Ruby 1.8.7,我有: dbi(0.4.5) dbd odbc(0.2.5) ruby odbc(0.99992) 下面是我的简单Ruby脚本: require 'rubygems' require 'dbi' db = DBI.connect('DBI:ODBC:MyDSN', 'user', 'password')

有人使用实际的技术成功地从64位Mac OS X 10.6(Snow Leopard)连接到SQL Server吗?我对使用iODBC Unix驱动程序不感兴趣

对于Ruby 1.8.7,我有:

  • dbi(0.4.5)
  • dbd odbc(0.2.5)
  • ruby odbc(0.99992)
下面是我的简单Ruby脚本:

require 'rubygems' require 'dbi' db = DBI.connect('DBI:ODBC:MyDSN', 'user', 'password') begin result = db.execute('SELECT name FROM sys.databases') while row = result.fetch do puts row.to_s end ensure db.disconnect if db end

我不熟悉阅读这种类型的错误转储,但是如果我猜的话,我会说fetch是最后一个被调用的东西,因为它调用了一个C函数(CFUNC)。我不确定C函数是gem、Ruby库还是ODBC驱动程序本身的一部分


有什么想法吗?

你有没有看过Mac OS X上的和,它们在使用Ruby on Rails时具有特定的增强功能,并且已经在Mac OS X上进行了测试?

你有没有想过这一点

我在Windows上使用Ruby ODBC和ActiveRecord查询自定义驱动程序:

    require "sinatra/activerecord"
    require "odbc"
我写了以下内容:

    maxwell = ODBC.connect("Maxwell")
    stmt = maxwell.run query

DSN(“Maxwell”)是全局配置的(在我的Ruby应用程序之外),我不需要指定驱动程序,因为它已经在odbc.ini中设置好了。

我使用ActiveRecord+OpenLink做了一些进一步的工作……但是,我似乎无法从ActiveRecord::Base.connection.execute获得结果。它返回NilClass错误。不幸的是,Mac上SQL Server的ODBC驱动程序仅适用于32位PowerPC体系结构。我用的是64位的英特尔(雪豹)。我不确定你在看什么驱动程序,爱德华。。。SQL Server的OpenLink驱动程序是一个通用版本,在Intel和PPC硬件上都支持32位和64位二进制文件,在您撰写本文时也有同样的支持。很遗憾,我可以通过JRuby+JDBC从Mac连接到SQL Server。我希望避免使用Java,而坚持使用纯Ruby。我使用FreeTDS尝试了这一点,并注意到statement.rb仍然存在分段错误。这是否意味着Mac OS上的两个ODBC驱动程序都有故障,或者dbd-ODBC-0.2.5有故障,或者ODBC ruby有故障? /Users/ejstembler/.rvm/gems/ruby-1.9.2-p0/gems/dbd-odbc-0.2.5/lib/dbd/odbc/statement.rb:41: [BUG] Segmentation fault ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-darwin10]

-- control frame ---------- c:0006 p:---- s:0022 b:0022 l:000021 d:000021 CFUNC :fetch c:0005 p:0014 s:0019 b:0018 l:000017 d:000017 METHOD /Users/ejstembler/.rvm/gems/ruby-1.9.2-p0/gems/dbd-odbc-0.2.5/lib/dbd/odbc/statement.rb:41 c:0004 p:0139 s:0014 b:0014 l:000013 d:000013 METHOD /Users/ejstembler/.rvm/gems/ruby-1.9.2-p0/gems/dbi-0.4.5/lib/dbi/handles/statement.rb:220 c:0003 p:0102 s:0009 b:0009 l:001588 d:0001e0 EVAL ss_dbi.rb:7 c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH

c:0001 p:0000 s:0002 b:0002 l:001588 d:001588 TOP

-- Ruby level backtrace information ---------------------------------------- ss_dbi.rb:7:in
<main>'
/Users/ejstembler/.rvm/gems/ruby-1.9.2-p0/gems/dbi-0.4.5/lib/dbi/handles/statement.rb:220:in
fetch' /Users/ejstembler/.rvm/gems/ruby-1.9.2-p0/gems/dbd-odbc-0.2.5/lib/dbd/odbc/statement.rb:41:in
fetch'
/Users/ejstembler/.rvm/gems/ruby-1.9.2-p0/gems/dbd-odbc-0.2.5/lib/dbd/odbc/statement.rb:41:in
fetch'

-- C level backtrace information -------------------------------------------
    require "sinatra/activerecord"
    require "odbc"
    maxwell = ODBC.connect("Maxwell")
    stmt = maxwell.run query