Как подключиться с ruby ​​к MS Sql Server - PullRequest
3 голосов
/ 27 мая 2009

Я пытаюсь подключиться к базе данных sql server 2005 с * компьютера NIX:

У меня есть следующая конфигурация: Linux 64bit

ruby ​​-v ruby 1.8.6 (2007-09-24, уровень исправления 111) [x86_64-linux] важные драгоценные камни: дбд-одбц (0.2.4) дБи (0.4.1) активный серверный sql адаптер записи - как плагин

ruby-odbc 0.9996 (устанавливается без каких-либо опций.) UnixODBC установлен FreeTDS установлен

кошка /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

1 Ответ

1 голос
/ 06 февраля 2010

Это выглядит близко, и я получил тот же тип установки для работы на 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"
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...