С точки зрения того, как это происходит, все модификации данных внутри транзакции хранятся в журнале транзакций, при этом в журнале также резервируется дополнительное пространство для записей отмены в случае необходимости отката.
В каждом журнале транзакций содержится достаточно информации, чтобы отменить внесенное изменение, чтобы при необходимости оно могло отменить изменение. (А также воспроизвести их в сценарии DR)
Если мы возьмем простую операцию удаления в качестве примера (поскольку я расшифровал это здесь в качестве примера содержимого журнала), удаляемая запись сохраняется в записи журнала транзакций LOP_DELETE_ROWS и с некоторые нетривиальные усилия, которые вы можете декодировать и продемонстрировать, что вся строка находится в записи журнала.
Если транзакцию нужно откатить, будет использовано место для отмены, зарезервированное в журнале, и строка будет вставлена заново. Причиной отмены резервирования места является то, что журнал транзакций не может быть заполнен в середине транзакции, не оставляя места для завершения или отката.