Попробуйте вместо этого. Я не проверял это, но это выглядит хорошо для меня:
Это, что я использовал:
Отсюда: http://github.com/rails-sqlserver/2000-2005-adapter/tree/master
Установка
Во-первых, Вам будет нужен Ruby DBI и Ruby ODBC. К моему знанию больше не поддерживается DBD ADO для DBI. Установка ниже не является всесторонним обходом через о том, как получить все необходимые подвижные части как FreeTDS, установленный и/или настроенный. Это также примет установки драгоценного камня и зависимых библиотек и самого адаптера.
Нужно отметить, что эта версия адаптера была разработана с помощью обоих древние 0.0.23 версии DBI до текущей стабильной версии 0.4.0. Поскольку более поздние версии DBI будут изменять много вещей, IT НАСТОЯТЕЛЬНО РЕКОМЕНДОВАН это Вы макс. Ваша установка на версии 0.4.0 который примеры ниже шоу. В настоящее время мы не поддерживаем версии DBI выше, чем 0.4.0. Хорошие новости - то, что при использовании очень старого DBI с ADO, технически этот адаптер будет все еще работать на Вас, но будет предупрежден, что Ваш путь становится старым и не может долгое время поддерживаться.
$ gem install dbi --version 0.4.0
$ gem install dbd-odbc --version 0.2.4
$ gem install rails-sqlserver-2000-2005-adapter -s http://gems.github.com
Отсюда: http://lambie.org/2008/02/28/connecting-to-an-mssql-database-from-ruby-on-ubuntu/
Во-первых, обновите свой ~/.profile для включения следующего:
export ODBCINI=/etc/odbc.ini
export ODBCSYSINI=/etc
export FREETDSCONF=/etc/freetds/freetds.conf
Затем перезагрузите свой .profile, выйдя и зайдя снова.
Во-вторых, на Сервере Ubuntu 7.10 я должен был установить некоторые пакеты.
mlambie@ubuntu:~$ sudo aptitude install unixodbc unixodbc-dev freetds-dev sqsh tdsodbc
С FreeTDS, установленным, я мог настроить его как это:
mlambie@ubuntu:/etc/freetds$ cat freetds.conf
[ACUMENSERVER]
host = 192.168.0.10
port = 1433
tds version = 7.0
Важной вещью здесь является ACUMENSERVER, который является DSN, который я буду использовать при соединении с базой данных. Хост и порт очевидны, и стоит отметить, что я должен был использовать 7.0 конкретно в качестве tds версии.
Тестирование FreeTDS не слишком трудно:
mlambie@ubuntu:~$ sqsh -S ACUMENSERVER -U username -P password
sqsh: Symbol `_XmStrings' has different size in shared object, consider re-linking
sqsh-2.1 Copyright (C) 1995-2001 Scott C. Gray
This is free software with ABSOLUTELY NO WARRANTY
For more information type '\warranty'
1> use acumen
2> go
1> select top 1 firstname, lastname from tblClients
2> go
[record returned]
(1 row affected)
1> quit
Затем необходимо настроить ODBC:
mlambie@ubuntu:/etc$ cat odbcinst.ini
[FreeTDS]
Description = TDS driver (Sybase/MS SQL)
Driver = /usr/lib/odbc/libtdsodbc.so
Setup = /usr/lib/odbc/libtdsS.so
CPTimeout =
CPReuse =
FileUsage = 1
mlambie@ubuntu:/etc$ cat odbc.ini
[ACUMENSERVER]
Driver = FreeTDS
Description = ODBC connection via FreeTDS
Trace = No
Servername = ACUMENSERVER
Database = ACUMEN
Я затем протестировал соединение с isql:
mlambie@ubuntu:~$ isql -v ACUMENSERVER username password
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL> use ACUMEN
[][unixODBC][FreeTDS][SQL Server]Changed database context to 'Acumen'.
[ISQL]INFO: SQLExecute returned SQL_SUCCESS_WITH_INFO
SQLRowCount returns -1
SQL> select top 1 firstname from tblClients;
[record returned]
SQLRowCount returns 1
1 rows fetched
SQL> quit
Хорошо, таким образом, у нас есть использование ODBC FreeTDS для соединения с удаленным сервером MSSQL. Все, что это оставляют, должно добавить Ruby в соединение.
mlambie@ubuntu:~$ sudo aptitude install libdbd-odbc-ruby
Последняя вещь протестировать состоит в том, что Ruby может использовать DBI и ODBC для удара фактической базы данных, и это легко протестировать:
mlambie@ubuntu:~$ irb
irb(main):001:0> require "dbi"
=> true
irb(main):002:0> dbh = DBI.connect('dbi:ODBC:ACUMENSERVER', 'username', 'password')
=> #<DBI::DatabaseHandle:0xb7ac57f8 @handle=#<DBI::DBD::ODBC::Database:0xb7ac5744
@handle=#<odbc::database:0xb7ac576c>, @attr={}>, @trace_output=#</odbc::database:0xb7ac576c><io:0xb7cbff54>,
@trace_mode=2>
irb(main):003:0> quit
И более полный тест (только с ВЫБОРОМ SQL, обратите внимание):
#!/usr/bin/env ruby
require 'dbi'
db = DBI.connect('dbi:ODBC:ACUMENSERVER', 'username', 'password')
select = db.prepare('SELECT TOP 10 firstname FROM tblClients')
select.execute
while rec = select.fetch do
puts rec.to_s
end
db.disconnect
</io:0xb7cbff54>
Отсюда (для фиксации odbc lib, находящегося в неправильном месте): http://ubuntuforums.org/showthread.php?t=433435&page=2
libtdsodbc.so
with freeTDS (freetds-dev, tdsodbc), you can either edit the path in the odbcinst.ini file for the [FreeTDS] driver section OR cp the /usr/lib/odbc/libtdsodbc.so into /usr/lib/libtdsodbc.so.
так или иначе работы при доступе mssql от подсказки
isql -v $dsn $user $passwd
я нашел, что это было полезно
http://www.unixodbc.org/doc/FreeTDS.html#Configuration
И затем в database.yml файле:
development:
adapter: sqlserver
mode: odbc
dsn: dsn_name
username: my_username
password: my_password
Это шаги, которые я скомпилировал для Centos 5.3. Мне потребовалось много проб и ошибок, чтобы заставить это работать. Это из полностью чистой установки Centos.
Установить EPEL:
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
Установить ruby, rubygems, freetds, unixODBC, инструменты разработки:
yum install gcc
yum install freetds
yum install ruby-devel
yum install unixODBC-devel
yum install ruby rubygems
Установить рельсы:
gem install rails
Установить драгоценные камни, связанные с БД:
gem install dbd-odbc
gem install rails-sqlserver-2000-2005-adapter -s http://gems.github.com
Загрузить, собрать и установить ruby-odbc:
wget http://www.ch-werner.de/rubyodbc/ruby-odbc-0.9997.tar.gz
tar zxvf ruby-odbc-0.9997.tar.gz
cd ruby-odbc-0.9997
ruby extconf.rb
make
make install
Окончательный список гемов:
# gem list
*** LOCAL GEMS ***
actionmailer (2.3.2)
actionpack (2.3.2)
activerecord (2.3.2)
activeresource (2.3.2)
activesupport (2.3.2)
dbd-odbc (0.2.4)
dbi (0.4.1)
deprecated (2.0.1)
rails (2.3.2)
rails-sqlserver-2000-2005-adapter (2.2.17)
rake (0.8.7)
Вы можете использовать различные инструменты, такие как isql, для проверки вашего ODBC-соединения. Сообщение Брайана подробно описывает это, поэтому я не буду повторяться. В rails вам нужен файл database.yml, который выглядит примерно так:
development:
adapter: sqlserver
mode: odbc
dsn: dsnName
username: username
password: password