はじめに
プロローグの理由で、LinuxクライアントからPHPでSQL Serverに繋ぐ案件が発生した。
条件を整理すると下記の通り。
条件整理
クライアント:
- Ubuntu Server 12.04 LTS
- PHP5.3以上
サーバー:
- SQL Server2008 R2 Express
- WindowsXP SP3
特殊な条件:
- apt-get 又はdpkg でインストール可能
- 日本語テーブル、日本語カラムを難なく読めること
- 文字化けしないこと
- 32bitマシン
日本語テーブルは社内でWindowsベースでスクラッチしたシステムによくありがちである。
我が社もこの傾向が強い。
Free/Libre OpenSource Softwareで構築時には正直言って鬼門中の鬼門だが・・・。
5年前のマシンなので32bit CPUです。
FreeTDSを使うことに決定
大きく分けてやり方は2つある。
Microsoftのドライバーを使うか、FreeTDSを使うか
MicrosoftのドライバーMicrosoftもLinuxで動くSQL Serverのドライバーを用意している。
しかし、条件が合わないので今回は却下します。
我々の条件
- Ubuntu
- 32bit OS
- apt-get installできること
Microsoftの条件
- RedhatかSUSE
- 64bit OS
- tar.gzを解凍しコンパイルすること
Redhat
http://www.microsoft.com/en-us/download/details.aspx?id=34687SUSE
http://www.microsoft.com/en-us/download/details.aspx?id=3643FreeTDSでSQL Serverに接続
FreeTDS はSybaseとMicrosoft SQL Serverと通信するためのプロトコルです。
FreeTDSを使ってデータを取得する方法は下記の2つ
- FreeTDS+DBLib関数(PHP)
- FreeTDS+unixODBC+odbc関数(PHP)
apt-getでインストール可能
素晴らしいことに、FreeTDSもunixODBCもFLOSSなソフトだ。
apt-getでインストールが可能である。
FreeTDSを使うことにする。
次回は、FreeTDSの仕組みと概要FreeTDS+DBLib関数(PHP)での使い方を示す。
下記を読むとFreeTDSが何なのかが理解できるだろう。
What is FreeTDS ?