Je fais pas mal de test sur les colonnes XML dans SQL SERVER (Post à venir d’ailleurs) et je viens de rencontrer une erreur assez improbable.
A force de supprimer puis rajouter des colonnes de type XML, j’ai eu au bout du compte une erreur m’indiquant en substance :
Cannot create a row of size 8063 which is greater than the allowable maximum of 8060.
Ok alors en fait non hein, j’ai que 2 colonnes dans ma table là oh !
Et bien la réponse est assez simple :
Voici une réponse de l’équipe MS là dessus:
“This behaviour is expected. Dropping a column is a metadata-only change and can leave gaps in column-offsets on the row.
When new columns are added to such a table the space left by the dropped columns may or may not be reused for the new column; it depends on the size and type of the old/new columns.
Bottom-line is that if you drop/add columns enough times there will be a point at which the max-fixed-size of the row will be exceeded due to the "holes" left behind by the dropped columns.”
Ok en gros on supprimer les métadatas de la colonne mais on ne récrit pas forcément toutes les pages (c’est pas bête)
A mieux les nouvelles données des futures nouvelles colonnes viendront écraser le contenu de l’ancienne colonne dans ma page de données.
Ou pas .. ce qui est mon cas, et particulièrement vrai dans une colonne XML.
La solution ?
Un bon vieux Rebuild Index
Voilà, j’arrête de m’arracher les cheveux et j’y retourne