SQL SERVER 2008 R2 DBCC СТРАНИЦА ЗАДЕРЖАНА - PullRequest
0 голосов
/ 17 декабря 2010

Я сделал тест о 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 ...)

но, яне знаю, что означает последние байты ....

пожалуйста, помогите мне, большое спасибо

Ответы [ 3 ]

0 голосов
/ 17 декабря 2010

От мастера, Пол Рэндал

Внутри хранилища: анатомия страницы Степень Запись

Это часть Записи, согласно комментариям к последней ссылке.

0 голосов
/ 17 декабря 2010

Каждая строка базы данных может использовать до 14 байтов в конце строки для получения информации о версии строки.Информация о версиях строк содержит порядковый номер транзакции, которая зафиксировала версию, и указатель на версионную строку.Эти 14 байтов добавляются при первом изменении строки или при вставке новой строки при любом из следующих условий:

READ_COMMITTED_SNAPSHOT или ALLOW_SNAPSHOT_ISOLATION имеют значение ON.

Таблица имееттриггер.

Используется несколько активных наборов результатов (MARS).

В настоящий момент в таблице выполняются операции построения индекса в сети.

0 голосов
/ 17 декабря 2010

Это 14-байтовый тег управления версиями [timestamep, указатель на tempdb].

...