СТРАНИЦА SQL SERVER 2008 R2 DBCC ЗАДОЛЖЕНА

я сделал тест о 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 62000000 00000000 00310000 † bbbbb ... .....1.. 0000000000000030: 00000†††††††††††††††††††††††††††††††††††††††††† ..

ТАБЛИЦА СМЕЩЕНИЯ:

Строка - смещение 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...)

но я не знаю смысла последних байтов....

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


person user545607    schedule 17.12.2010    source источник


Ответы (3)


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

person Paul Randal    schedule 17.12.2010
comment
изоляция моментального снимка использует байты управления версиями? - person user545607; 17.12.2010
comment
но я выбираю * из sys.databases, я никогда не устанавливаю чтение зафиксированного моментального снимка или разрешаю изоляцию моментального снимка - person user545607; 17.12.2010
comment
Каждая строка базы данных может использовать до 14 байтов в конце строки для информации о версии строки. Информация о версии строки содержит порядковый номер транзакции, зафиксировавшей версию, и указатель на строку с версией. Эти 14 байтов добавляются при первом изменении строки или при вставке новой строки при любом из следующих условий: параметры READ_COMMITTED_SNAPSHOT или ALLOW_SNAPSHOT_ISOLATION включены. В таблице есть триггер. Используется несколько наборов активных результатов (MARS). Операции построения индекса в сети в настоящее время выполняются для таблицы. - person user545607; 17.12.2010

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

Внутри механизма хранения: Анатомия страницы. И Extent. И Запись

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

person gbn    schedule 17.12.2010

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

Параметры READ_COMMITTED_SNAPSHOT или ALLOW_SNAPSHOT_ISOLATION включены.

В таблице есть триггер.

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

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

person user545607    schedule 17.12.2010