2012年9月10日月曜日

Windows+ PHP+ Remote MSSQLサーバー




コンピュータ一台で使用する場合は、該当しないんです。他のコンピュータMSSQLサーバに
TCP/ IPリモートで接続するときに参考にすべき資料です。
 

BSDやLinux環境では、公開資料FreeDTSをインストールすることで、外部MSSQLに安定的にアクセス可能です。しかし、WindowsとPHP環境では、MSSQLをリモートTCP/ IPアクセスになる時プロシージャを実行しないか、結果のメッセージを受けてこないなどのいくつかの問題点が発生します。

まず、MSSQLを使用するにはPHP_MSSQL.DLL拡張モジュールをphp.iniファイルで設定をしてくれるし。

もしリモートTCP / IPでSQLサーバー接続する場合はxan.regファイルを受け取って、レジストリ登録となります。
db接続におけるWindowsアプリケーションは、一度ODBCがいっても、SQLサーバーに直接接続も必要なライブラリがありますが、レジストリの処理はdb接続ライブラリを使用するようになるのです。

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSSQLServerClientConnectTo]
"DSQUERY"="DBNETLIB"

そして接続するコンピュータの定義を
MSSQLクライアントネットワークユーティリティをご利用ください。

例)"220.85.19.99\ db143"="DBNMPNTW、220.85.19.99\ db143、1433"


DBNMPNTW.DLL(名前付きパイプのとき)
DBNETLIB.DLL(tcp/ ip SQL server2000のとき)
dbmssocn.dll(tcp/ ip SQL server7.0のとき)
sqlsrv32.dll


そして、stored procedure実行時insert、delete、update、問い合わせの結果はNullに返されるので、PHPはエラーとして認識してしまうことになるのにこの部分は簡単なスクリプトで処理したりすべきものです。 MSSQL.DLL次のバージョンでは期待して見られるか、udanax.orgで処理して表示するか悩み中です。


$ lastMessage= mssql_get_last_message();
if(!strstr($ lastMessge、"Changed database context")&&!strstr($ lastMessge、"コンテキストが"))

0 件のコメント:

コメントを投稿