Błąd jest spowodowany tym, że nie możesz mieć wiersza w serwerze SQL, który jest większy niż 8KB (rozmiar 1 strony), ponieważ wiersze nie mogą rozciągać się na strony - to podstawowe ograniczenie SQL Servera, więcej o tym przeczytasz tutaj:
Zwróć uwagę, że serwer SQL pozwoli ci utworzyć tabelę, jednak jeśli spróbujesz faktycznie wstawić jakiekolwiek dane, które obejmują wiele stron, spowoduje to powyższy błąd.
Oczywiście to się nie zgadza, ponieważ gdyby powyższe było całą prawdą, to pojedynczy VARCHAR(8000)
kolumna wypełniłaby wiersz w tabeli! (Tak było kiedyś). SQL Server 2005 ominął to ograniczenie, zezwalając na przechowywanie pewnych danych z wiersza na innej stronie, pozostawiając zamiast tego 24-bajtowy wskaźnik. Możesz o tym przeczytać tutaj:
- Jak Sql Server 2005 omija wiersz 8 KB ograniczenie rozmiaru
- Maksymalny rozmiar wiersza w SQL Server 2005 do limitu
Jak widać, oznacza to, że wiersze mogą teraz obejmować wiele stron, jednak wiersze pojedynczych kolumn nadal muszą zmieścić się na jednej stronie (stąd maksymalny rozmiar kolumny to VARCHAR(8000)
) i nadal istnieje limit całkowitej liczby takich kolumn, które możesz mieć (około 8000 / 24 =~300 według moich szacunków)
Oczywiście w tym wszystkim brakuje głównego punktu, który jest taki, że 400 szerokich kolumn na jednej tabeli to absurd!!!
Powinieneś dokładnie przyjrzeć się swojemu schematowi bazy danych i znaleźć coś bardziej rozsądnego - możesz zacząć od wybrania bardziej konserwatywnych szacunków dotyczących rozmiarów kolumn (takich jak VARCHAR(255)
lub VARCHAR(50)
), ale naprawdę musisz podzielić niektóre z tych pól na osobne tabele.