このエラーは、行がページにまたがることが許可されていないため、8KB(1ページのサイズ)を超える行をSQL Serverに含めることができないために発生します。これは、SQL Serverの基本的な制限であり、ここで詳細を読むことができます。
SQL Serverではテーブルを作成できますが、実際に複数のページにまたがるデータを挿入しようとすると、上記のエラーが発生することに注意してください。
もちろん、これは完全には足りません。なぜなら、上記が完全な真実である場合、単一のVARCHAR(8000)
列はテーブルの行を埋めます! (これは以前のケースでした)。 SQL Server 2005は、行の特定のデータを別のページに格納できるようにし、代わりに24バイトのポインターを残すことで、この制限を回避しました。これについてはここで読むことができます:
ご覧のとおり、これは行が複数のページにまたがることができることを意味しますが、単一の列の行は単一のページに収まる必要があります(したがって、列の最大サイズはVARCHAR(8000)
)そして、あなたが持つことができるそのような列の総数にはまだ制限があります(私の見積もりでは約8000/24 =〜300)
もちろん、これにはすべての要点が欠けています。つまり、1つのテーブルに400本の幅の列があるのはばかげているということです!!!
データベーススキーマをじっくりと見て、より合理的なものを考え出す必要があります。まず、列サイズについてより控えめな見積もりを選択することから始めることができます(VARCHAR(255)
など)。 またはVARCHAR(50)
)、ただし、これらのフィールドの一部を個別のテーブルに分割する必要があります。