Структура записи с текстовым столбцом - PullRequest
1 голос
/ 06 января 2010

У меня есть запись, которую я просмотрел, используя команду страницы DBCC.Вот как это выглядит:

Memory Dump @0x00E5C060

00000000:   30000800 01000000 02000001 001f8000 †0...............         
00000010:   00d10700 0000009a 00000001 000000††††...............          

Slot 0 Column 0 Offset 0x4 Length 4

col1 = 1                             

col2 = [Textpointer] Slot 0 Column 1 Offset 0xf Length 16

TextTimeStamp = 131137536            RowId = (1:154:0)     

Здесь col1 имеет тип int, а col2 имеет тип ntext.
Я знаю, что значения столбцов ntext хранятся втекстовая страница.

Но я не знаю, как интерпретировать информацию col2 выше, например:

col2 = [Textpointer] Slot 0 Column 1 Offset 0xf Length 16

TextTimeStamp = 131137536            RowId = (1:154:0)    

Может кто-нибудь помочь мне понять это?


Спасибо заотвечая,

 "col2 = [Textpointer] Slot 0 Column 1 Offset 0xf Length 16"

00000000:   30000800 01000000 02000001 001f8000 †0...............
00000010:   00d10700 0000009a 00000001 000000††††............... 

При этом говорится, что длина информации равна 16. Ее эквивалентные шестнадцатеричные значения:

00 00d10700 0000009a 00000001 000000†††

Я могу найти информацию о

TextTimeStamp = 131137536            RowId = (1:154:0)    

в вышеуказанных шестнадцатеричных значениях.Но как я могу найти информацию, что это текстовый указатель?

Более того, в другом случае я наткнулся на [Inline Blob root] для значения типа данных nvarchar.

Вот как это выглядело:

col6= [BLOB Inline Root] Slot 1 Column 38 Offset 0x16d Length 24

Level = 0                            Unused = 0                           UpdateSeq = 1
TimeStamp = 1969553408               
Link 0

Здесь, если вы заметили, что длина равна 24, в отличие от предыдущего экземпляра (текстовый указатель). Здесь есть некоторая дополнительная информация, а также последовательность обновления: UpdateSeq = 1.

Как я могу различитьмежду двумя экземплярами, посмотрев на последовательность байтов?

1 Ответ

1 голос
/ 06 января 2010

col2 - указатель на единицу выделения BLOB. Столбец ntext находится в слоте 0 на странице (1: 154). Вы можете DBCC сделать дамп страницы 1: 154, чтобы найти содержимое столбца ntext col2.

Более подробный пример на http://blogs.msdn.com/sqlserverstorageengine/archive/2006/12/13/More-undocumented-fun_3A00_-DBCC-IND_2C00_-DBCC-PAGE_2C00_-and-off_2D00_row-columns.aspx

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...