In SQL Server, perché è un tinyint memorizzato con 9B nella riga. Per qualche motivo sembra che ci sia un ulteriore byte alla fine della maschera bitmap NULL.
USA tempdb; PARTIRE CREA TABELLA tbl ( I TINYINT NON NULL ); PARTIRE INSERISCI IN tbl (i) VALORI (1); PARTIRE DBCC IND ('tempdb', 'tbl', - 1); PARTIRE DBCC TRACEON (3604); - Il dump della pagina andrà alla console PARTIRE DBCC PAGE ('tempdb', 1.168,3); PARTIRE
Risultati (ho invertito i byte a causa della PAGINA DBCC che mostra prima il byte meno significativo):
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!?)