从在Ubuntu上运行的Ruby on Rails应用程序连接到MSSQL数据库

时间:2011-03-03 03:17:44

标签: ruby-on-rails sql-server activerecord odbc

我有一种情况,我正在尝试构建一个Web应用程序,它将表中的记录总数计算并输出到屏幕上。听起来很简单......?

我遇到的主要问题是我想看的数据库是MSSQL。我之前没有从Rails建立这种数据库连接,所以我希望有人能指出我正确的方向。

我的RoR应用程序将存在于Ubuntu服务器上(并且正在OSX Leopard系统上开发)。

修改

  • 我应该澄清MSSQL DB在SQL Server 2005上运行并且在Windows服务器环境中。

  • 我试过查看wiki.rubyonrails.org指南,但该网站似乎已经失效(悲伤)

谢谢!

7 个答案:

答案 0 :(得分:8)

此Stackoverflow问题可能有所帮助:Rails & MSSQL 2008 - Will We Hit Barriers?

基本上你需要安装一个MSSQL数据库适配器(而不是大多数教程都会引导你完成的MySQL或Postgres),并适当地配置你的database.yml:

http://rorblog.techcfl.com/2008/04/14/ruby-on-rails-connection-to-sql-server/

http://the-banana-peel.saltybanana.com/2008/06/connecto-to-microsoft-sql-server-from.html

http://wiki.rubyonrails.org/database-support/ms-sql(尽管rails wiki在写作时看不起来)

P.S。我假设MSSQL服务器将在某个单独的Microsoft服务器上运行。

答案 1 :(得分:2)

看一下我如何使用上述actionrecord-sqlserver adapter here

的例子。

您可以使用rails模型的映射并使用ActiveModel帮助程序。

答案 2 :(得分:0)

我会有一个刺,并说你可能需要通过ODBC连接到mssql DB。似乎有一些宝石可以做到这一点。希望其中一个人能有文档让你走上正轨。

ODBC rubygems

答案 3 :(得分:0)

答案 4 :(得分:0)

我使用Sequel与DBI和ODBC,它似乎正在工作。

require "dbi"
require "sequel"
Sequel.datetime_class = DateTime
p "testing dbi"
# to setup a DSN, Start->Settings->CtlPanel->AdminTools->DataSources
conn = DBI.connect('DBI:ODBC:dsn')
p conn.connected?
p conn.select_one("SELECT @@VERSION")
conn.disconnect
p "testing sequel"
db = Sequel.odbc('(odbc_dsn_goes_here)', :db_type=>'mssql')
db.fetch("SELECT TOP 2 * FROM TABLE") do |row|
    p row
end

答案 5 :(得分:0)

我将 activerecord-sqlserver-adapter tiny_tds 一起使用,它确实有效!

这是database.yml

development:
  adapter: sqlserver
  username: 'user'
  password: 'secret'
  dataserver: 'dbserver_name\instance_name'
  database: 'dbname'
  appname: 'my app name'

答案 6 :(得分:0)

名为active-record-sql-adapter的gem允许您通过ActiveRecord连接到SQL Server数据库。你可以做点什么

class RemodeDB
  establish_connection(:remote_db) #<=
  self.abstract_class = true # to avoid Rails' no associated model exception
end

然后让你的类继承这样的连接

class Product < RemoteDB
   self.table_name ... 
end

请注意,为了连接到早期版本的SQL Server(在您的情况下为2005),您需要一个早期版本的gem,它可能与您当前版本的Rails不兼容。