Как запрос SQL Azure может возвращать старое значение и новое значение записи базы данных?

#sql-server #azure-sql-database

Вопрос:

У меня есть ситуация, с которой я раньше не сталкивался.

При выполнении двух разных запросов в Microsoft Azure SQL к набору данных один возвращается как запись со старым значением перед обновлением, а другой запрос возвращает новое обновленное значение.

Я попытался заставить оба запроса выполняться без индекса, и результат все тот же.

Как это может произойти и с чего мне следует начать поиск путей устранения этой проблемы?

Ответ №1:

По умолчанию база данных SQL Azure использует изоляцию МОМЕНТАЛЬНЫХ снимков, ЗАФИКСИРОВАННЫХ ДЛЯ ЧТЕНИЯ. Таким образом, если вы обновите строку в транзакции, то сеанс транзакции и любой сеанс, использующий грязные чтения, увидят обновленное, но не зафиксированное значение, в то время как любой другой сеанс, использующий уровень изоляции ЧТЕНИЯ или МОМЕНТАЛЬНОГО снимка, увидит версию строки до транзакции.