CakePHPのしくみ などにおいて,
業務で使っているRDBMSがMSSQLなのでそれに接続するテストをやってみようと思いました。CakePHP データベースにMSSQLを使うには というページを発見。このリンクには非常に簡単に繋がるという風に書いてあるのですが,僕の環境ではうまくつながりません。今後の研究課題です。
と書きましたが,この件について再度挑戦してみました。
mssql_connect関数にてエラーが発生していました。そこでCakePHPの問題と切り分けるために,単独でmssql_connect関数による接続を実験してみました。するとサーバ名を変えても何をしてもエラーになって繋がりませんでした。これはCakePHPの問題ではないと思いましたので,いろいろとググった結果,ntwdblib.dllというDLLのバージョンが古い場合にうまく繋がらないとの記述を見つけました。この件については,次のサイトが非常に詳しく解説してくださっています。
PHP5 with SQLServer2005Express
自分のPCの中のこのDLLを検索してみると,c:\xampp\phpやc:\xampp\apache\binにあるntwdblib.dllのバージョンは,2000.2.8.0で「古い」ものでした。最新版のxamppなのに・・・・。そこで,c:\windows\system32にあるDLLのバージョンを調べてみると2000.80.194.0で,これはOKなんだそうです。(面白いことに古いバージョンのファイルの方がタイムスタンプが最近のものになっていました)
そこで古いやつ二つの上に新しいのをコピーしました。(本当は古いDLLを削除するだけでよかったみたいですが)
するとちゃんとMS-SQLに接続できるようになりました。CakePHPに戻ってdatabase.phpにMS-SQLの設定をして見てもちゃんと接続できることがわかりました。