Грешката е причинена, защото не можете да имате ред в SQL сървър, който е по-голям от 8KB (размерът на 1 страница), тъй като редовете не могат да обхващат страници - това е основно ограничение на SQL Server, можете да прочетете повече за него тук:
Обърнете внимание, че SQL сървърът ще ви позволи да създадете таблицата, но ако се опитате действително да вмъкнете каквито и да е данни, които обхващат няколко страници, тогава ще се получи горната грешка.
Разбира се, това не е съвсем подходящо, защото ако горното беше цялата истина, тогава единичен VARCHAR(8000)
колона ще запълни ред в таблица! (Това беше така). SQL Server 2005 заобиколи това ограничение, като позволи определени данни от ред да се съхраняват в друга страница и вместо това остави 24-байтов указател. Можете да прочетете за това тук:
- Как Sql Server 2005 заобикаля реда от 8KB ограничение на размера
- Максимален размер на ред в SQL Server 2005 до ограничението
Както можете да видите, това сега означава, че редовете вече могат да обхващат няколко страници, но редовете с една колона все още трябва да се поберат в една страница (следователно максималният размер на колона е VARCHAR(8000)
) и все още има ограничение за общия брой такива колони, които можете да имате (около 8000 / 24 =~300 според моята оценка)
Разбира се, всичко това пропуска основната точка, която е, че 400 широки колони на една таблица е абсурдно!!!
Трябва да разгледате внимателно схемата на вашата база данни и да измислите нещо по-разумно - можете да започнете с избора на някои по-консервативни оценки за размерите на колоните (като VARCHAR(255)
или VARCHAR(50)
), но наистина трябва да разделите някои от тези полета в отделни таблици.