13

RubyをMicrosoftSQLServerに接続するのに問題があります。Mac OS Xを実行していますが、ターゲット環境はUbuntuLinuxです。

これが私が試したことです:

  • unixODBCをインストールします
  • FreeTDSをインストールする
    • オプションを使用--with-unixodbc=/usr/local/etc --with-tdsver=8.0

次に、これらのファイルを次の場所に配置しました/usr/local/etc

  • odbc.ini
  • odbcinst.ini
  • freetds.conf

次のように、ファイル内のFreeTDSドライバーへの参照をodbcinst.iniODBCドライバーファイルに追加しました。

;
; odbcinst.ini
;
;
[FreeTDS]
Driver = /usr/local/lib/libtdsodbc.so

次に、次のfreetds.confようにファイルでサーバーを構成しました。

# Aries database server (SQL Server 2008)
[aries-db1]
        host = xx.xx.xx.xx
        port = 1433
        tds version = 8.0

odbc.iniそして最後に、次のようにファイルにODBCDSNを追加しました。

[aries-db1]
Driver      =   FreeTDS
Description =   ODBC Connection via FreeTDS
Trace       =   1
Servername  =   aries-db1
Database    =   MY_DB
UID         =   user1
PWD         =   pass1

サーバーがオンラインでポートが開いていることを確認できます(telnetおよびyougetsignal.comのポートチェックを使用)。

テストとして、私はこれを行いました:

tsql -S aries-db1 -U user1 -P pass1

そして、それはうまく接続しているようでした。無効な値を渡すと、予期されるエラーが発生しました。

最後に私の質問に:

これをRubyに拡張するにはどうすればよいですか?私がこれまで試したことは何もうまくいきませんでした。私はこのように続編を試しました:

require 'sequel'
Sequel.connect('aries-db1')['select * from foo'].all

そして、私はこのようなエラーを受け取ります:

Sequel::DatabaseConnectionError: ODBC::Error: S1000 (0) [unixODBC][FreeTDS][SQL Server]Unable to connect to data source

これは、ドライバー構成が正しく検出されていることを示していますが、何らかの理由で接続できません。

私もこのようにDBIを試しました:

DBI.connect('DBI:ODBC:aries-db1')

そして、私は同様のエラーを受け取ります。

助言がありますか?私は非常に近いように感じますが、これをトラブルシューティングするために次に何を試すべきかわかりません。

4

1 に答える 1

14

https://github.com/rails-sqlserver/tiny_tdsTinyTdsを ご覧ください -DB-Libraryを使用したRuby用の最新のシンプルで高速なFreeTDSライブラリ

インストールが簡単で使いやすい

于 2011-01-13T08:11:52.887 に答える