Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Impossible de créer une ligne de taille 8937 supérieure au maximum autorisé de 8060

L'erreur est due au fait que vous ne pouvez pas avoir une ligne dans le serveur SQL supérieure à 8 Ko (la taille d'une page) car les lignes ne sont pas autorisées à s'étendre sur des pages - c'est une limite de base de SQL Server, vous pouvez en savoir plus ici :

Notez que le serveur SQL vous permettra de créer la table, mais si vous essayez d'insérer des données qui s'étendent sur plusieurs pages, cela donnera l'erreur ci-dessus.

Bien sûr, cela ne correspond pas tout à fait, car si ce qui précède était toute la vérité, alors un seul VARCHAR(8000) colonne remplirait une ligne dans un tableau ! (C'était le cas avant). SQL Server 2005 a contourné cette limitation en permettant à certaines données d'une ligne d'être stockées dans une autre page, et en laissant à la place un pointeur de 24 octets. Vous pouvez en savoir plus ici :

Comme vous pouvez le voir, cela signifie maintenant que les lignes peuvent désormais s'étendre sur plusieurs pages, mais les lignes de colonne unique doivent toujours tenir dans une seule page (d'où la taille maximale d'une colonne étant VARCHAR(8000) ) et il y a toujours une limite au nombre total de telles colonnes que vous pouvez avoir (environ 8000/24 ​​=~300 selon mon estimation)

Bien sûr, tout cela manque le point principal, qui est que 400 colonnes de large sur une seule table est absurde !!!

Vous devriez examiner attentivement votre schéma de base de données et trouver quelque chose de plus raisonnable - vous pouvez commencer par choisir des estimations plus conservatrices sur les tailles de colonne (comme VARCHAR(255) ou VARCHAR(50) ), mais vous devez vraiment diviser certains de ces champs en tables séparées.