#sql-server #azure-sql-database
Вопрос:
У меня есть ситуация, с которой я раньше не сталкивался.
При выполнении двух разных запросов в Microsoft Azure SQL к набору данных один возвращается как запись со старым значением перед обновлением, а другой запрос возвращает новое обновленное значение.
Я попытался заставить оба запроса выполняться без индекса, и результат все тот же.
Как это может произойти и с чего мне следует начать поиск путей устранения этой проблемы?
Ответ №1:
По умолчанию база данных SQL Azure использует изоляцию МОМЕНТАЛЬНЫХ снимков, ЗАФИКСИРОВАННЫХ ДЛЯ ЧТЕНИЯ. Таким образом, если вы обновите строку в транзакции, то сеанс транзакции и любой сеанс, использующий грязные чтения, увидят обновленное, но не зафиксированное значение, в то время как любой другой сеанс, использующий уровень изоляции ЧТЕНИЯ или МОМЕНТАЛЬНОГО снимка, увидит версию строки до транзакции.