Я пытаюсь понять внутренности журнала tranaction mssql. я следующая транзакцияКак найти измененное значение дельты для транзакции обновления после откат в журнале транзакций в SQL Server
Begin TRANSACTION
update xyz1 set a=6
Rollback TRANSACTION
Изначально значение столбца «а» 5. Таким образом, было обнаружено, что результат сделки, чтобы быть, как показано ниже, с помощью
SELECT
Operation, [RowLog Contents 0], [RowLog Contents 1, AllocUnitName, [Page ID],
[Slot ID], [Offset in Row],[Transaction ID]
FROM
sys.fn_dblog(NULL,NULL)
operation rowcontent0 row content 1 AllocUnitName Page ID Slot ID Offset
LOP_BEGIN_XACT NULL NULL NULL NULL NULL
LOP_MODIFY_ROW 0x01 0x06 dbo.xyz1 0001:0000022e 0 4
LOP_MODIFY_ROW 0x 0x01 dbo.xyz1 0001:0000022e 0 4
LOP_ABORT_XACT NULL NULL NULL NULL NULL
Как видно из приведенных выше значений, что данные изменяются от 1 до 6 и снова его изменили на 1, так как откат произошло.
Затем, чтобы получить информацию о памяти я использовать приведенную ниже команду, где 558 (22e) является идентификатор страницы, которые могут быть найдены в приведенной выше таблице
dbcc traceon(3604)
dbcc page(lumrecon,1,558,3)
идти в слот 0 и rowoffset 4, чтобы увидеть данные изменено
00000000: 10000800 01000000 010000†††††††††††††...........
Мы наблюдаем из дампа памяти, что находим только значение откатной транзакции, т. е. a = 1.
Но мой вопрос заключается в том, как найти исходное значение i.e 6 в произошедшем tranaction. Является ли это поведение Microsoft, которое не намеренно записывает информацию в журнал или есть какой-либо способ? пожалуйста, предложите.
Заранее спасибо