W SQL Server dlaczego maleintka jest przechowywana z 9B w wierszu. Z jakiegoś powodu wydaje się, że na końcu maski bitmapowej NULL jest dodatkowy jeden bajt.
USE tempdb; UDAĆ SIĘ UTWÓRZ TABELĘ tbl ( i TINYINT NOT NULL ); UDAĆ SIĘ INSERT INTO tbl (i) WARTOŚCI (1); UDAĆ SIĘ DBCC IND („tempdb”, „tbl”, - 1); UDAĆ SIĘ DBCC TRACEON (3604); - Zrzut strony przejdzie do konsoli UDAĆ SIĘ STRONA DBCC („tempdb”, 1,168,3); UDAĆ SIĘ
Wyniki (odwróciłem bajty, ponieważ strona DBCC pokazuje najpierw najmniej znaczący bajt):
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!?)