2013年2月7日木曜日

cygwin(gnupack)のRubyでSQLServerに接続

gnupackでapt-cyg install rubyってやるだけでrubyの1.9.xが入るのは以前のエントリどおりだけど、その後SQLServerからデータ取りたくて難儀したのでメモ。

従来はdbiとdbd/adoの組み合わせでやっていたんだけど、調べてみるとADOがもうメンテナンスされてないみたいで入れられないことが分かりショック。ODBCでやれ、みたいな。

しょうがないので、試してみる

gem install dbi
gem install dbd-odbc

これだけではodbc.soが入らないので、http://www.ch-werner.de/rubyodbc/からtarballを取得して、Cygwin版としてコンパイル。

extconf.rb
make
make install

試しにユーザDSNを定義してクエリかけてみたら、うまくできた。ただ、定義がないPCでも実行することもあるので

DBI.connect('DBI:ODBC:Driver={SQL Server};Server={db_server};Trusted_Connection=yes;AutoTranslate=No;Database=db_name')

のように書けばいちいち定義しなくても接続できることを確認。