2009-04-06 19 views

答えて

11

私が使用したもの。この:

ここから: http://github.com/rails-sqlserver/2000-2005-adapter/tree/master

インストール

まず、あなたは、Ruby DBIとRuby ODBCが必要になります。私の知る限りでは、DBIのADO DBDはもはやサポートされていません。以下のインストールは、FreeTDSのような必要なすべての可動部品をインストールおよび/または設定する方法を網羅したものではありません。また、依存ライブラリーとアダプター自体の両方のgemインストールを想定しています。

このバージョンのアダプターは、現在の安定版0.4.0までの古代の0.0.23バージョンのDBIを使用して開発されました。 DBIのそれ以降のバージョンでは多くの変更が行われる予定ですので、以下の例に示すバージョン0.4.0へのインストールを最大限にお勧めします。当分の間、我々は0.4.0以上のDBIバージョンはサポートしていません。良いニュースは、ADOで非常に古いDBIを使用していた場合、技術的にこのアダプタは引き続き機能しますが、パスが古くなり、長い間サポートされない可能性があることを警告してください。ここから

$ 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ファイルをリロードします。

第2に、Ubuntu 7.10 Serverではいくつかのパッケージをインストールする必要がありました。ここで重要なことは、データベースに接続するときに、私が使用しますDSNでACUMENSERVER、ある

[email protected]:/etc/freetds$ cat freetds.conf 
[ACUMENSERVER] 
    host = 192.168.0.10 
    port = 1433 
    tds version = 7.0 

:私はこのようにそれを設定することができ設置FreeTDSので

[email protected]:~$ sudo aptitude install unixodbc unixodbc-dev freetds-dev sqsh tdsodbc 

。ホストとポートは自明ですが、7.0を特にtdsバージョンとして使用しなければならないことは注目に値します。

テストFreeTDSのはあまりにも難しいことではありません。

[email protected]:~$ 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設定する必要があります:

[email protected]:/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 

[email protected]:/etc$ cat odbc.ini 
[ACUMENSERVER] 
Driver   = FreeTDS 
Description  = ODBC connection via FreeTDS 
Trace   = No 
Servername  = ACUMENSERVER 
Database  = ACUMEN 

は、私は、その後のisqlとの接続テスト:

[email protected]:~$ 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 

OKを、私たちはFreeTDSを使ってリモートのMSSQLサーバーに接続するODBCを持っています。残っているのは、Rubyをミックスに追加することだけです。

[email protected]:~$ sudo aptitude install libdbd-odbc-ruby 

テストの最後には、Rubyは、実際のデータベースをヒットするDBIとODBCを使用することができるということであり、それはテストするのは簡単です:

[email protected]:~$ 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 SELECTとのより完全なテスト(、 )あなたを気に: http://ubuntuforums.org/showthread.php?t=433435&page=2

#!/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を)修正しますプロンプト

isql -v $dsn $user $passwd 

からMSSQLにアクセスする際に10

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. 

のいずれかの方法は、私はこれが有用であることがわかっ働くhttp://www.unixodbc.org/doc/FreeTDS.html#Configuration

そしてdatabase.ymlファイル内

development: 
    adapter: sqlserver 
    mode: odbc 
    dsn: dsn_name 
    username: my_username 
    password: my_password 
2

これらはste ps私はCentos 5.3のためにコンパイルしました。これを実現するには、多くの試行錯誤が必要でした。それは完全にきれいなCentosのインストールからです。

EPELをインストールします。

yum install gcc 
yum install freetds 
yum install ruby-devel 
yum install unixODBC-devel 
yum install ruby rubygems 

レールを取り付けます:

gem install rails 

は、DB関連の宝石をインストールします。

rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm 

はルビー、RubyGemsの、FreeTDSの、unixODBCの、開発ツールをインストールします。

gem install dbd-odbc 
gem install rails-sqlserver-2000-2005-adapter -s http://gems.github.com 

ダウンロード、ルビー、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) 

あなたのODBC接続をテストするためのisqlのような様々なツールを使用することができます。ブライアンのポストはこれをすばらしい詳細でカバーしているので、私は繰り返さない。あなたはこのようなものになりますdatabase.ymlを必要とするレールで:Ubuntuで

development: 
    adapter: sqlserver 
    mode: odbc 
    dsn: dsnName 
    username: username 
    password: password 
1

を、私はFreeTDS系とのActiveRecord-のSQLServerアダプタの宝石を使用します。

sudo apt-get install freetds 

をそして、あなたのGemfileにこれを追加します:あなたががちを通じてFreeTDSのをインストールすることができます

gem 'activerecord-sqlserver-adapter' 

私は物事を取得するために、8.0/etc/freetds/freetds.confで構成されたFreeTDSのバージョン番号を変更しなければなりませんでした正しく動作します。

[global] 
    tds version = 8.0 

activerecord-sqlserver-adapter on GitHub

FreeTDS project

関連する問題