Я сделал тест о DBCC IND и странице DBCC.Движок: SQL Server 2008
Сценарий:
CREATE TABLE dbo.t2
(
ID int,
Col1 varchar(10),
Col2 varchar(20)
);
INSERT INTO dbo.t2 SELECT 1,REPLICATE('a',10),REPLICATE('b',10)
DECLARE @DBID int,@TableID int;
SELECT @DBID=DB_ID(),@TableID=OBJECT_ID('dbo.t2');
DBCC IND(@DBID,@TableID,-1)
- это показывает: 1 274 1 278 1307151702 0 1 72057594039107584 Данные в строке 1
DBCC TRACEON (3604)
--DBCC PAGE (@DBID, 1,22,3)
--then dump the page info
DBCC PAGE(@DBID, 1,274,1)
показывает:
ДАННЫЕ:
Слот 0, смещение 0x60, длина 51, DumpStyle BYTE
Тип записи = PRIMARY_RECORD Атрибуты записи = NULL_BITMAP VARIABLE_COLUMNS VERSIONING= 51 Дамп памяти @ 0x000000000F7EA060
0000000000000000: 70000800 01000000 03000002 001b0025 † p ..............% 0000000000000010: 00616161 61616161 61616162 62626262 † 0a0aaaaaaaaaaaaaaaaaaaaa.gmail.gif62000000 00000000 00310000 † bbbbb ........ 1 .. 0000000000000030: 00000 †††††††††††раст п†††††††† ...
ТАБЛИЦА СМЕЩЕНИЯ:
Строка - Смещение 0 (0x0) - 96 (0x60) Я пытаюсь объяснить:
байт один 0x70 01110000
БИТ 0: SQL SERVER 2005/2008
БИТ 1-3: ПЕРВИЧНЫЕ ДАННЫЕ
БИТ 4: БЫЛ НУЛЬ
БИТ 5: БЫЛ VAR
БИТ 6: НЕ ИСПОЛЬЗУЕТСЯ
БИТ 7: НЕ ПРИЗРАЧНО
Второй байт
0x00: НЕ ИСПОЛЬЗУЕТСЯ
Тридный байт
0x0008: смещение 8
фиксированная длинаint, я получил значение 1
затем следующий байт
0300: 3 столбца
00: не ноль
0002: 2столбцы
смещение конца столбца var 0x001B (я получил значение aaa ....)
смещение конца столбца var 0x0025 (я получил значение bbbb ...)
но, яне знаю, что означает последние байты ....
пожалуйста, помогите мне, большое спасибо