CentOSからSQL Serverへ接続する
自分のブログでも書いてますが、こちらにも書いてみます。
ちょっと機会があったので備忘録的にメモしておきます。
環境はこんなかんじ
- SQL Server 2008 R2 on Windows Server 2008 R2
- CentOS 5.8
yumインストールでも良いのですが、今回はunixODBC, FreeTDSはソースでビルドしてみます。
unixODBCをインストール
SQL Serverと接続するためにunixODBCをインストールします。
インストールは unixodbcのサイトからtarballをダウンロードして/usr/local配下にインストールします。
$ curl -O ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.1.tar.gz $ tar xvfz unixODBC-2.3.1.tar.gz $ cd unixODBC-2.3.1 $ ./configure --prefix=/usr/local/`basename $PWD` $ make # make install
FreeTDSをインストール
TDSとはTabular Data Streamの略でSQL Server間でデータのやり取りをするアプリケーションレイヤのプロトコルのようです。
TDSについてはTreasureDataの太田さんがまとめていたので参照していただけると良いと思います。
FreeTDSはLinux/UnixシステムでTDS通信が行えるようになるライブラリです。
$ curl -O ftp://ftp.astron.com/pub/freetds/stable/freetds-stable.tgz $ tar xvfz freetds-stable.tgz $ cd freetds-0.91 $ ./configure \ --prefix=/usr/local/`basename $PWD` \ --enable-shared \ --enable-static \ --enable-odbc-wide \ --with-tdsver=8.0 \ --with-unixodbc=/usr/local/unixODBC-2.3.1 $ make # make install
FreeTDSとunixODBCのコンフィグを設定
freetds.conf
FreeTDSの設定を記載します。
/etc/freetds/freetds.conf に以下の情報を記載して保存します。
[SqlServer] host = <DatabaseのIP> port = <Databaseのポート: Default=1433> tds version = 8.0 client charset = UTF-8
odbcinst.ini
unixODBCの設定はodbcinst.ini, odbc.ini ファイルで設定します。
odbcinst.ini にはドライバの情報を記載します。
以下の情報で /etc/odbcinst.ini に保存します。
[FreeTDS] Description = FreeTDS Driver Driver = /usr/local/freetds-0.91/lib/libtdsodbc.so Setup = /usr/local/freetds-0.91/lib/libtdsodbc.so FileUsage = 1 CPTimeout = 5 CPReuse = 5
環境変数設定
これが設定されていないと動作しません。
~/.bashrc などに以下を追記しておいても良いですね。
export ODBCINI=/etc/odbc.ini export ODBCSYSINI=/etc export FREETDSCONF=/etc/freetds/freetds.conf
接続確認
あとは低レイヤーから順に接続確認してみます。
tsql
FreeTDSを使って接続確認します。
/usr/local/freetds-0.91/bin/tsql \ -S <freetds.confに書いたDBのラベル(ここではSqlServer)> \ -D <Database名> \ -U <接続ユーザ名> \ -P <パスワード>
以下の表示が出たら成功。
locale is "ja_JP.UTF-8" locale charset is "UTF-8" using default charset "UTF-8" Default database being set to <Database名> 1>
isql
次はunixODBCを使って接続確認します。
/usr/local/unixODBC/bin/isql <odbc.iniのラベル> <接続ユーザ名> <パスワード>
以下の表示が出れば成功。
+---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL>
次回はこれを使ってRubyからSQL Serverへ接続してみます。