私はちょうどMaximum Capacity Specification for SQL Server 2008を読んで、行あたり最大8060バイトを見たのです?何が... 1行につき8KBしか許されないのですか? (はい、私は "行オーバーフローストレージ"特殊な取り扱い、私は標準的な動作について話している)を見たSQL Serverは最大8KB /行ですか?
私はここで何かを誤解しましたか?私は確信しているので、私はいくつかのMBサイズのSQL Serverデータベース内に格納されているバイナリオブジェクトを見たと確信している。この不吉な行ごと本当に1行、複数の列のようにテーブルの行を意味ですか?
だから私は3つのnvarchar
の各4000文字がそこにあるとき(テキストボックスに書かれた3つの法的文書を仮定する...) - サーバーは警告を発する?
他のページにプッシュされる最大の列である必要はありませんが、自動的にそのように処理されると思います。制限を超えると、最大の列が別のページにプッシュされます。また、データが実際には8060バイトの制限を超えている場合にのみ、列サイズの合計がそうでない場合に注意してください。これが起こったときにスキーマを再考することは良い考えですが、SQL Serverがそれを処理できるようにすることはめったにありません。 OPの例では、各ドキュメントを別々に格納し、N個のドキュメントを格納するために結合テーブルを保持するほうがおそらく良いでしょう。 – tvanfosson
これは私が思うSQL Server 2000の動作です(CREATE TABLEの警告、INSERTまたはUPDATEのエラー)。 SQL Server 2008はオーバーフローを処理します。 –
@tvanfosson:sp_tableoptionの "行外の大きな値の型"オプションで構成することはできますが、基本的にサイレントで自動です。 @Martin:それについて忘れてしまった:SQL Server 2005で始まった。 – gbn