Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Не може да се създаде ред с размер 8937, който е по-голям от допустимия максимум от 8060

Грешката е причинена, защото не можете да имате ред в SQL сървър, който е по-голям от 8KB (размерът на 1 страница), тъй като редовете не могат да обхващат страници - това е основно ограничение на SQL Server, можете да прочетете повече за него тук:

Обърнете внимание, че SQL сървърът ще ви позволи да създадете таблицата, но ако се опитате действително да вмъкнете каквито и да е данни, които обхващат няколко страници, тогава ще се получи горната грешка.

Разбира се, това не е съвсем подходящо, защото ако горното беше цялата истина, тогава единичен VARCHAR(8000) колона ще запълни ред в таблица! (Това беше така). SQL Server 2005 заобиколи това ограничение, като позволи определени данни от ред да се съхраняват в друга страница и вместо това остави 24-байтов указател. Можете да прочетете за това тук:

Както можете да видите, това сега означава, че редовете вече могат да обхващат няколко страници, но редовете с една колона все още трябва да се поберат в една страница (следователно максималният размер на колона е VARCHAR(8000) ) и все още има ограничение за общия брой такива колони, които можете да имате (около 8000 / 24 =~300 според моята оценка)

Разбира се, всичко това пропуска основната точка, която е, че 400 широки колони на една таблица е абсурдно!!!

Трябва да разгледате внимателно схемата на вашата база данни и да измислите нещо по-разумно - можете да започнете с избора на някои по-консервативни оценки за размерите на колоните (като VARCHAR(255) или VARCHAR(50) ), но наистина трябва да разделите някои от тези полета в отделни таблици.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Производителност на свързан сървър Insert-Select

  2. как да намерите размера на редовете в таблицата

  3. Има ли начини да добавите 2 таблици, когато използвате оператора INSERT в конструктора на заявки?

  4. Как да направите редактируема заявка за преминаване / преминаване?

  5. Entity Framework Database.SetInitializer просто не работи