お仕事メモ。
SQL Server 2012上に用意したテーブルのText型カラムに、長い文字列を突っ込もうとしたところ「入らない」という事態が発生。書き込み処理はLinux上で稼働するPHPから。疑うべきポイントはドライバやSQL Serverの設定やらいろいろありそうなのですが、とりあえず文字数に関する制限などが無いかを調べてみています。
SQL Serverのサイズに関する制約を見てみる
MSDNのSQL Server 2016 ドキュメントに情報がありました。
- Maximum Capacity Specifications for SQL Server
- https://msdn.microsoft.com/en-us/library/ms143432.aspx
日本語版はSQL Server 2014ドキュメントですがこちら。
この中に「Columns per INSERT statement」として「4096」との記載があります。これか!?と思いましたがこれは「列数」。1回の処理の列数上限ですからちょっと違いますね……。
同じ問題に直面している人はいないのか?
これが課題ですね。とりあえずGoogleで「sql server text insert 4096」をキーワードに検索すると…こんなのがヒットしました。
データをText型からとってきたら、4096バイト?文字?で切れてしまうというもの。この解決法として、下記のブログにある「SET TEXTSIZE」コマンドでのサイズ指定が提示されています。
- SQL Server, PHP and Truncating Text / AddedBytes
- https://www.addedbytes.com/blog/sql-server-php-truncating-text/
これを試してみましょうか。
データベースの限界性能を引き出す技術 ?NoSQLに飛びつく前に知っておきたい原理と最新テクニック
- 作者: 山崎泰史,武吉佑祐
- 出版社/メーカー: 技術評論社
- 発売日: 2014/03/18
- メディア: Kindle版
- この商品を含むブログ (1件) を見る