sql >> Database >  >> RDS >> Sqlserver

Kan geen rij met maat 8937 maken die groter is dan het toegestane maximum van 8060

De fout wordt veroorzaakt omdat u geen rij in SQL Server kunt hebben die groter is dan 8 KB (de grootte van 1 pagina) omdat rijen geen pagina's mogen overspannen - het is een basislimiet van SQL Server, u kunt er hier meer over lezen:

Houd er rekening mee dat u met de SQL-server de tabel kunt maken, maar als u daadwerkelijk gegevens probeert in te voegen die meerdere pagina's beslaan, geeft dit de bovenstaande foutmelding.

Dit klopt natuurlijk niet helemaal, want als het bovenstaande de hele waarheid zou zijn, dan zou een enkele VARCHAR(8000) kolom zou een rij in een tabel vullen! (Dit was vroeger het geval). SQL Server 2005 heeft deze beperking omzeild door toe te staan ​​dat bepaalde gegevens van een rij op een andere pagina worden opgeslagen en in plaats daarvan een 24-byte-aanwijzer achter te laten. Je kunt hier meer over lezen:

Zoals je kunt zien, betekent dit nu dat rijen nu meerdere pagina's kunnen beslaan, maar rijen met één kolom moeten nog steeds in één pagina passen (vandaar dat de maximale grootte van een kolom VARCHAR(8000) is ) en er is nog steeds een limiet op het totale aantal van dergelijke kolommen dat u kunt hebben (ongeveer 8000 / 24 =~300 volgens mijn schatting)

Natuurlijk mist dit allemaal het belangrijkste punt, namelijk dat 400 brede kolommen op een enkele tafel absurd is!!!

U zou uw databaseschema goed moeten bekijken en met iets redelijks op de proppen moeten komen - u zou kunnen beginnen met het kiezen van wat conservatievere schattingen voor kolomgroottes (zoals VARCHAR(255) of VARCHAR(50) ), maar je moet een aantal van die velden echt opsplitsen in aparte tabellen.



  1. mysql-ondersteuning in php 7

  2. Php-sessie en postproblemen op de inlogpagina

  3. Dynamische SQL-uitvoering in SQL Server

  4. MySQL relationele databases gebruiken op Fedora 14