Question Taille de ligne maximale de SQL Server


Je suis tombé sur cette erreur aujourd'hui. Je me demande si quelqu'un peut me dire ce que cela signifie:

Impossible de trier une ligne de taille 9522, qui est supérieure au maximum autorisé de 8094.

Est-ce que 8094 octets? Personnages? Des champs? Est-ce un problème de joindre plusieurs tables qui dépassent une certaine limite?


11
2017-08-19 19:32


origine


Réponses:


Dans SQL 2000, la limite de lignes est de 8 Ko, ce qui correspond à la taille d'une page en mémoire.

[Modifier]

En 2005, la taille de la page est la même (8 Ko), mais la base de données utilise des pointeurs sur la ligne de la page pour pointer vers d'autres pages contenant des champs plus grands. Cela permet à 2005 de dépasser la limite de taille de la ligne 8K.


10
2017-08-19 19:39



Le problème qui semble attirer beaucoup de monde est que vous pouvez créer une table qui, par définition, contiendrait plus de 8 Ko de données, et l'acceptera très bien. Et la table fonctionnera correctement, jusqu’à ce que vous essayiez d’insérer plus de 8 Ko de données dans la table.

Disons que vous créez une table avec un champ entier, pour la clé primaire et 10 champs varchar (1000). La table fonctionnerait bien la plupart du temps, car le nombre de fois que vous rempliriez les 10 champs varchar (1000) serait très limité. Howerver, dans le même que vous avez essayé de mettre 1000 caractères dans chacun de vos champs, cela vous donnerait l'erreur mentionnée dans cette question.


7
2017-08-19 20:33



Ce post fait un bon travail en essayant de l'expliquer (dans le contexte de SQL 2005):

http://www.consortioservices.com/Blog/2008/02/28/MaximumRowSizeInSQLServer2005ToTheLimit.aspx


3
2017-08-19 19:38



FYI, l'exécution de cette commande SQL sur votre base de données peut résoudre le problème si elle est provoquée par un espace à récupérer après la suppression de colonnes de longueur variable:

DBCC CLEANTABLE (0,[dbo.TableName])

Voir: http://msdn.microsoft.com/en-us/library/ms174418.aspx


2
2018-03-30 19:00



C'était un problème dans SQL 2000, mais je pensais que cela avait été corrigé en 2005.


0
2017-08-19 19:35



8094 octets.

Si vous en donnez plus sur ce que vous faites, cela pourrait nous aider à déterminer la cause réelle.


0
2017-08-19 19:37