Trong SQL Server, tại sao một tinyint được lưu trữ với 9B trong hàng. Vì một số lý do, dường như có thêm một byte ở cuối mặt nạ bitmap NULL.
SỬ DỤNG tempdb; ĐI TẠO BẢNG Tbl ( tôi TINYINT KHÔNG NULL ); ĐI XÁC NHẬN VÀO Tbl (i) GIÁ TRỊ (1); ĐI DBCC IND ('tempdb', 'tbl', - 1); ĐI DBCC TRACEON (3604); - Trang kết xuất sẽ đi giao diện điều khiển ĐI TRANG DBCC ('tempdb', 1.168,3); ĐI
Kết quả (Tôi đã đảo ngược các byte do DBCC PAGE hiển thị byte đầu tiên ít quan trọng nhất):
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!?)