No SQL Server, por que um tinyint é armazenado com 9B na linha. Por alguma razão, parece haver um byte adicional no final da máscara de bitmap NULL.
USE tempdb;
IR
CRIAR TABELA tbl
(
i TINYINT NÃO NULO
);
IR
INSERIR EM tbl (i)
VALORES (1);
IR
DBCC IND ('tempdb', 'tbl', - 1);
IR
DBCC TRACEON (3604); - Despejo de página irá para o console
IR
PÁGINA DBCC ('tempdb', 1.168,3);
IR
Resultados (inverti os bytes devido às páginas do DBCC mostrando primeiro o byte menos 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!?)