[PHP-users 8826] Re: MSSQL につなぐには

Yasushi Matsuura php-users@php.gr.jp
Tue, 23 Jul 2002 03:25:53 +0900 (JST)


Mon, 22 Jul 2002 15:07:25 +0900 に
"KAWAI,Takanori" <GCD00051@nifty.ne.jp> さんから届いた
『[PHP-users 8815] Re: MSSQL につなぐには』 について...

どうもまつうらです。

> 川合孝典です。
> 
(中略)
> > ということで、PEAR 経由のアクセスは Windows からしかできない、
> > ということではないでしょうか。
> 過去ログの
> [PHP-users 7546] PEAR & MSSQL & FreeTDS
> http://ns1.php.gr.jp/pipermail/php-users/2002-May/007554.html
> そして
> [PHP-users 7556] Re: PEAR & MSSQL & FreeTDS
> http://ns1.php.gr.jp/pipermail/php-users/2002-May/007564.html
> 
> によれば、まつうらさんはDebianからFreeTDS経由でアクセス
> できたように思うのですが、いかがでしょう?
> #小細工しないとダメみたいですけど。
> 
川合さんより御指摘のあったとおり、Debian環境 + PHP 4.1.2で
WindowsNT 4.0 + MS SQLServer 7.0 へのアクセスに成功しています。

Linux環境ではFreeTDS(http://www.freetds.org/)経由でのアクセスがいい感じです。
FreeTDSの環境設定は非常に簡単で、$FreeTDS_HOME/etc/interfaceにサーバの
諸情報を記述するだけで、基本的にアクセスができています。
# $FreeTDS_HOMEはインストールしたパスを指しているつもりです。

例)
    myserver
       query tcp ether server1 1433
       master tcp ether server1 1433

    ※myserverは同設定のラベルですので、なんでもいいです。
    ※server1がNTのホスト名、1433がTDSのポート番号です。

なお、余談ですが、FreeTDSがきちんとインストールされているかをチェックするのに
sqsh(http://www.sqsh.org/)を使うという面白い方法があります。
これは、UNIX版isqlのようなもので、コマンドラインのクライアントです。

例)
    $ sqsh -S server1 -U user -P passwd -D Admin
    1> select * from ActiveInfo
    2> \go

PHPで使用するには、php.iniに以下のような設定が必要でした。

sybase.interface_file = "$Freetds_HOME/etc/interfaces"

これで、とりあえずはmssql関数でも、sybase関数でも同様にアクセス可能です。
この記述のみそはサーバのところに先程$Freetds_HOME/etc/interfacesで
記述したラベル名を使うことです。

例)
$dbh = mssql_connect(myserver, user, passwd);
if (!$dbh) {
  die("DB 接続エラー");
}
# DB選択
mssql_select_db(mdss, $dbh);

また、PEAR DBでの接続ですがこれはDB.phpの記述に訂正が必要でした。
やはり基本はmssql.so or mssql.dllを用意することが前提のようで、
FreeTDS経由の場合にこの存在チェックが邪魔をしていました。
詳細は以下を御覧ください。

> [PHP-users 7556] Re: PEAR & MSSQL & FreeTDS
> http://ns1.php.gr.jp/pipermail/php-users/2002-May/007564.html

以上、御役に立てれば幸いです。
----------------------------------------------------------
まつうら@xdsl  <vfr@ru.xdsl.ne.jp>
pgp public key: http://www.xdsl.ne.jp/ru/vfr/pubkey.asc