MSSQL не версионник. Этот термин хз кто-то приклел к снепшотам и плюнул им в одинэсников. (Кто-то из преподавателей-экспертов) Одно к другому не имеет отношения. Это больше подходит к механизму хранения и учета номеров транзакций в ПГ.
Да, какие-то промежуточные снимки каких-то данных сиквел может сохранять в темп, но это "не версии строк". Сдохнет темп - да и фиг с ним. При старте инстанса темп всегда создается новый. Сиквелу темп не нужен - не нужен и разрабам )))
Ну вот если копия страницы в темпдб попала, а транзакция не успела записать в основную базу новую версию целиком или собралась откатываться. И тут ... все выключилось :)
Не понял, а при чем тут снапшоты? Транзакция по определению либо записывается целиком, либо откатывается, либо вырубается сервак из розетки с сохранением целостности
А вот это что означает из документации: «Хранилища версий. Это коллекции страниц данных со строками данных, которые поддерживают функции управления версиями строк. Существует два типа хранилищ: общее хранилище версий и хранилище версий для построения индекса в подключенном режиме. Хранилища версий содержат следующее: версии строк, создаваемые транзакциями изменения данных в базе данных, которая использует READ COMMITTED через транзакции изоляции»
Version stores, which are collections of data pages that hold the data rows that support features for row versioning. There are two types: a common version store and an online-index-build version store. The version stores contain: Row versions that are generated by data modification transactions in a database that uses READ COMMITTED through row versioning isolation or snapshot isolation transactions.
Т.е. я так понимаю что текущая версия кладётся в темпдб на время выполнения транзакции, затем выполняется транзакция ну и по результатам все подчищается
Я все ещё не понимаю, в чем противоречие. В темпдб кладётся слепок заблокированых данных, которые нужны соседней транзакции. Если выдернуть винт из системы, то тут что версионник данные может закорраптить на диске, что блокировочник