• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQL Serverからのvarchar型のデータ取得データ長)

SQL Serverからのvarchar型のデータ取得データ長

このQ&Aのポイント
  • PearのDBを使いSQLサーバーから「varchar(8000)」で宣言したフィールドからデータを取得すると255バイトで切られます(実際にはもっと長いデータが入っている)
  • サーバー⇔クライアント間のデータ通信で、SQL Serverからのvarchar型のデータが255バイトで切られる問題が発生しています
  • AccessでODBC経由で取得した場合はデータ長255以上で取得できました。

質問者が選んだベストアンサー

  • ベストアンサー
  • satoh
  • ベストアンサー率77% (17/22)
回答No.1

> FreeTDS Ver.: 0.63 とありますが、 http://jp2.php.net/manual/ja/ref.mssql.php のadd a note add a note User Contributed Notesの2番目のvangoethemさんによると、 I had problems related to VARCHAR limitation to 255 characters (INSERT/UPDATE works, SELECT was truncated) using freetds driver (Linux platform). By upgrading the TDS protocol to 8.0 (see freetds config file), I fixed the problem. とあるので、TDSのバージョンを確認されてみては如何でしょうか? # SQL Server の8.0以降からプロトコルが変わってるのでしょうかね。

1percent
質問者

お礼

回答ありがとうございます。できました!!! freetdsのコンパイル時にtdsプロトコルVer8.0のオプションを付けていたのですがfreetds.confの[global]オプションではバージョン指定が4.2になっておりそこを8.0(7.0でもOK)に修正してPHPを実行したところ255を超える文字列が取得できました。 クライアント2ではDBのDSNを"mssql://…"から"odbc(mssql)://…"のODBC経由で接続したところ255を超える文字列を取得できたのでクライアント1でもODBC接続で逃げようかと模索しておりましたがLinuxのODBC接続について調べてみると結構ややこしく途方に暮れておりました。 satohさんのアドバイスのおかげで当初の予定で開発を進めることができます。ありがとうございました。

関連するQ&A