Fejlen skyldes, at du ikke kan have en række i SQL Server, der er større end 8KB (størrelsen på 1 side), fordi rækker ikke må spænde over sider - det er en grundlæggende grænse for SQL Server, du kan læse mere om det her:
Bemærk, at SQL-serveren giver dig mulighed for at oprette tabellen, men hvis du forsøger at indsætte data, der strækker sig over flere sider, vil det give ovenstående fejl.
Selvfølgelig stemmer dette ikke helt, for hvis ovenstående var hele sandheden, så enkelt VARCHAR(8000)
kolonne ville fylde en række i en tabel! (Dette plejede at være tilfældet). SQL Server 2005 omgik denne begrænsning ved at tillade, at visse data fra en række gemmes på en anden side, og i stedet efterlade en 24-byte pointer. Det kan du læse om her:
- Hvordan SQL Server 2005 omgår 8KB rækken størrelsesbegrænsning
- Maksimal rækkestørrelse i SQL Server 2005 til grænsen a>
Som du kan se betyder dette nu, at rækker nu kan strække sig over flere sider, men enkeltsøjlerækker skal stadig passe ind på en enkelt side (derfor er den maksimale størrelse af en kolonne VARCHAR(8000)
), og der er stadig en grænse for det samlede antal af sådanne kolonner, du kan have (omkring 8000 / 24 =~300 efter mit skøn)
Selvfølgelig mangler det hele hovedpointen, som er, at 400 brede kolonner på et enkelt bord er absurd!!!
Du bør tage et langt grundigt kig på dit databaseskema og finde på noget mere fornuftigt - du kunne starte med at vælge nogle mere konservative estimater på kolonnestørrelser (såsom VARCHAR(255)
eller VARCHAR(50)
), men du skal virkelig opdele nogle af disse felter i separate tabeller.