2015-12-28 39 views
1
CREATE TABLE tbl 
    (
    col1 VARCHAR(1) 
) 

INSERT INTO tbl 
VALUES  (NULL) 

DBCC traceon(3604) 

DBCC ind(0, tbl, -1) 

DBCC page(0, 1, 290, 3) WITH tableresults /*Change page number as required*/ 

輸出慾海SQL Server頁面中存儲

PAGE HEADER: Slot 0 Offset 0x60 Length 9 Record Type PRIMARY_RECORD 
PAGE HEADER: Slot 0 Offset 0x60 Length 9 Record Attributes NULL_BITMAP 
PAGE HEADER: Slot 0 Offset 0x60 Length 9 Record Size 9 
Slot 0 Offset 0x60 Length 9 Memory Dump @0x000000001646A060  
10000400 01000100 d8       ........Ø 

什麼是D8在這裏?

回答

1

這僅僅是填充,

enter image description here

行只需要佔用7個字節(在該行needs no space的端部的空值或空白varchar列),但the minimum row size is 9 bytes以上強調所以你在最後兩個字節之前查看頁面上的任何內容的垃圾。

+0

我希望它的意思。它佔用1個字節。 d8(hexa)到二進制是11011000和216十進制。難道這是因爲varchar需要2個字節,而不管存儲什麼數據? –

+0

@ShantanuGupta - 現在你已經發布了創建表,可以更精確。不,在這種情況下並不意味着什麼。 –

+0

感謝您的解釋。您是否使用過任何工具來閱讀頁面內幕,如截圖所示? –