Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Impossibile creare una riga di dimensione 8937 maggiore del massimo consentito di 8060

L'errore è causato dal fatto che non è possibile avere una riga nel server SQL maggiore di 8 KB (la dimensione di 1 pagina) perché le righe non possono estendersi su pagine:è un limite di base di SQL Server, puoi leggere di più qui:

Tieni presente che il server SQL ti consentirà di creare la tabella, tuttavia se provi a inserire effettivamente dati che si estendono su più pagine, verrà visualizzato l'errore precedente.

Ovviamente questo non torna del tutto, perché se quanto sopra fosse tutta la verità, allora il singolo VARCHAR(8000) colonna riempirebbe una riga in una tabella! (Questo era il caso). SQL Server 2005 ha aggirato questa limitazione consentendo l'archiviazione di determinati dati di una riga in un'altra pagina e lasciando invece un puntatore a 24 byte. Puoi leggere questo qui:

Come puoi vedere questo ora significa che le righe ora possono estendersi su più pagine, tuttavia le righe di una singola colonna devono ancora rientrare in una singola pagina (quindi la dimensione massima di una colonna è VARCHAR(8000) ) e c'è ancora un limite al numero totale di tali colonne che puoi avere (circa 8000 / 24 =~300 secondo la mia stima)

Ovviamente a tutto questo manca il punto principale, ovvero che 400 colonne larghe su un unico tavolo sono assurde!!!

Dovresti dare un'occhiata a lungo allo schema del tuo database e trovare qualcosa di più ragionevole:potresti iniziare scegliendo alcune stime più prudenti sulle dimensioni delle colonne (come VARCHAR(255) o VARCHAR(50) ), ma devi davvero dividere alcuni di questi campi in tabelle separate.