How to connect from Ruby to MS Sql Server

I am trying to connect to sql server 2005 database from a * NIX machine:

I have the following configuration: Linux 64bit

ruby -v ruby ​​1.8.6 (2007-09-24 patchlevel 111) [x86_64-linux] important gems: dbd-odbc (0,2,4) dbi (0,4,1) active record sql server adapter - as a plugin

ruby-odbc 0.9996 (installed without any options). UnixODBC installed freeTDS installed

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;"

or

DRIVER=/usr/lib/libtdsodbc.so;TDS_Version=8.0;SERVER=XXXX;DATABASE=XXX;Port=1433;uid=XXX;pwd=XXXX;"

I get the following error:

>>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'

It looks like ODBC cannot find a suitable ODBC driver, but I have no idea why.

I had a problem with /usr/lib/libtdsodbc.so, which is empty by default debian package free-tds dev, but I decided to remove the remote package and install it from sources.

Feel any thought!

Note: I can also connect using the same steps on mac 10.5

+3
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"
)
+1

Source: https://habr.com/ru/post/1709185/


All Articles