Dans SQL Server, pourquoi une minuscule est-elle stockée avec 9B dans la ligne. Pour une raison quelconque, il semble y avoir un octet supplémentaire à la fin du masque bitmap NULL.
USE tempdb;
ALLER
CRÉER TABLE tbl
(
i TINYINT NOT NULL
);
ALLER
INSÉRER DANS tbl (i)
VALEURS (1);
ALLER
DBCC IND («tempdb», «tbl», - 1);
ALLER
DBCC TRACEON (3604); - Le vidage de page ira à la console
ALLER
PAGE DBCC («tempdb», 1 168,3);
ALLER
Résultats (j'ai inversé les octets car DBCC PAGE affiche d'abord l'octet le moins significatif):
Record Size = 9B
10000500 01010000 00
TagA = 0x10 = 1B
TagB = 0x00 = 1B
Null Bitmap Offset = 0x0005 = 2B
Our integer column = 0x01 = 1B
Column Count = 0x0001 = 2B
NULL Bitmap = 0x0000 = 2B (what!?)