я сделал тест о 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_INFO Размер записи = 51 Дамп памяти @0x000000000F7EA060
00000000000000000000000000000000000000000000000000800 0100000000 03000002 001b0025 † p ..............% 000000000000000010: 00616161 61616161 61616162 62616162 † .aaaaaaaaaaaabbbbb 0000000000000020: 62626262
ТАБЛИЦА СМЕЩЕНИЯ:
Строка - смещение 0 (0x0) - 96 (0x60) я пытаюсь объяснить:
байт один 0x70 01110000
БИТ 0: SQL СЕРВЕР 2005/2008
БИТ 1-3: ПЕРВИЧНЫЕ ДАННЫЕ
БИТ 4: ИМЕЕТ НУЛЬ
БИТ 5: ЕСТЬ ПЕРЕМЕННАЯ
БИТ 6: НЕ ИСПОЛЬЗУЕТСЯ
БИТ 7: НЕ ПРИЗРАК
Второй байт
0x00 : НЕ ИСПОЛЬЗУЕТСЯ
Третий байт
0x0008 :смещение 8
длина исправления int, я получил значение 1
затем следующий байт
03:00: 3 столбца
00 : не ноль
0002 :2 столбца
var column endoffset 0x001B (я получил значение aaa....)
смещение конца столбца var 0x0025 (я получил значение bbbb...)
но я не знаю смысла последних байтов....
пожалуйста, помогите мне, большое спасибо