linuxのperl から windowsのSQLServerにアクセスする方法


http://www.augustus.to/blog/3128/archives/000046.html
http://www.augustus.to/blog/3128/archives/000047.html
http://www.datadirect.co.jp/SupportLink/dev_center/odbc/topics/perl
↑を参考に「DBD::ODBC」を使って接続できるようにしようとしました。

DBIが入ってるかどうかは
perl -MDBI
(↑返答が返ってこなければ、入ってる。CTRL+Cで終了してOK)

DBD::ODBCが入ってるかどうか確認だね。
perl -MDBD::ODBC

DBIの使い方
http://www.rfs.jp/sb/perl/index.html
(↑のクイックコマンド集を見ればとりあえず大丈夫)
他の言語からSQL使うのと大して変わらない
SQL文書いてprepare、execute、selectならfetch更新系ならcommit


http://www.datadirect.co.jp/download/uninstall.asp

インストールされてる
ODBCドライバのインストールと設定」をする為に、
unixODBCのアンインストールが必要。。。。。orz

unixODBCが入ってるか確認
rpm -qa | grep unixODBC

いました。。。。orz

rpm -q --whatrequires unixODBC

↑で依存をチェック

「依存関係はありません」って出たけど、、、
本番サーバだから怖い・・・怖すぎる・・・・。

一応
■Connect for ODBC のアンインストール方法 (UNIXおよびLinux
Connect for ODBC をインストールしたディレクトリ全てを削除します。
url:http://www.datadirect.co.jp/download/uninstall.asp

って書いてあるからフォルダ名変えて実験もできるけど。。。
本番サーバ・・・・・orz


ということで方向変更

「unixODBC+FreeTDS+DBD::ODBCでSQL Serverに接続する」

↑こっちにします。

※参考
http://rebecca.ac/milano/mt/archives/001412.html
http://www.yokote.net/tech/linux/freetds/index.shtml

1.unixODBCのインストール(今回はすでに入ってるからやらない)

# wget http://www.unixodbc.org/unixODBC-2.2.11.tar.gz
# tar xvzf unixODBC-2.2.11.tar.gz
# cd unixODBC-2.2.11
# ./configure --enable-gui=no
# make
# make install

2.libiconvのインストール(文字コードの変換を行わない場合はlibiconvは必要ないかも)

# wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.10.tar.gz
# wget http://www2d.biglobe.ne.jp/~msyk/software/libiconv/libiconv-1.10-cp932.patch.gz
# tar xvzf libiconv-1.10.tar.gz
# gunzip libiconv-1.10-cp932.patch.gz
# patch -p0 < libiconv-1.10-cp932.patch
# cd libiconv-1.10
# ./configure
# make
# make install


3.FreeTDSのインストール
(FreeTDSの概要 http://www.amy.hi-ho.ne.jp/jbaba/unix/tdsodbc.htm

$ wget ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz
$ wget http://yokote.net/tech/linux/freetds/freetds-stable-0.64.patch
$ tar xvzf freetds-stable.tgz
$ patch -p0 < freetds-stable-0.64.patch
patching file freetds-0.64/src/tds/encodings.h
patching file freetds-0.64/src/tds/write.c
$ cd freetds-0.64/
$ export LD_LIBRARY_PATH=/usr/local/lib
$ export LD_RUN_PATH=/usr/local/lib


◎痛い事実発覚!!!
↑の作業中「make」部分でodbc系が全部コンパイルエラーでたから調べてたら・・・
横手さんの所でこんなんが、、

※執筆時点での最新版は2.2.12ですが、FreeTDS 0.64でコンパイルエラーが起きたので使用しません。

現状もともと入ってるバージョンは2.2.11のunixODBCです。。。orz あぁ。。orz
もう、、、、消すしかない。。。。。。のか。。。orz

ああ。。。。消そうにも。。。
vim /etc/odbcinst.ini
↑こんなんみっけた。Postgresが使ってる可能性があるよ。。。
バージョン下げて入れる方法が一番よさそう。

バージョンは関係ありませんでした。

(unixODBC-devel.i386が入っていない件)

# yum -C list | grep unixODBC
unixODBC.i386 2.2.11-7.1 installed
unixODBC-devel.i386 2.2.11-7.1 base
freeradius-unixODBC.i386 1.1.3-1.2.el5 base
unixODBC-kde.i386 2.2.11-7.1 base

#yum install unixODBC-devel

※準備完了。
以下を実行

$./configure --with-unixodbc=/usr --with-msdblib --with-libiconv-prefix=/usr/local
$ make
# make install

・゚・(つД`)・゚・やっとmakeが通ったよー
もう、自分が嫌いになりそうだよー。