Connecting to an MSSQL database from a Ruby on Rails application running on Ubuntu

≯℡__Kan透↙ 提交于 2019-11-30 09:41:08
Clinton

This Stackoverflow question might help: Rails & MSSQL 2008 - Will We Hit Barriers?

Basically you will need to install a MSSQL database adapter (rather than MySQL or Postgres that most tutorials step you through), and configure your database.yml appropriately:

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 (Although the rails wiki looks down at time of writing)

P.S. I am assuming the MSSQL server will be running on a separate Microsoft server someplace.

Take a look at an example I've made on how to use the mentioned actionrecord-sqlserver adaptor here

You can use mappings with rails models and use the ActiveModel helpers.

I'll have a stab, and say that you'll probably need to connect to a mssql DB via ODBC. There appears to be a few gems that do this. hopefully one of them will have docs to put you on the right track.

ODBC rubygems

I used Sequel with DBI and ODBC and it seems to be working.

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

I used activerecord-sqlserver-adapter with tiny_tds and it works!

Here's database.yml

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

A gem called active-record-sql-adapter lets you connect to an SQL Server db via ActiveRecord. You can do something like

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

then have your classes inherit the connection like so

class Product < RemoteDB
   self.table_name ... 
end

Note that in order to connect to earlier versions of SQL Server (2005 in your case), you would need an earlier version of the gem which may not be compatible with your current version of Rails.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!