Будет ли выбор вмешиваться DML

При использовании чистого чтения (чтение зафиксировано)... Будет ли мешать выбранному запросу другой запрос DML (Вставить, Обновить, Удалить)? Если да, можете ли вы привести некоторые случаи. Я использую SQL Server 2005

Какова вероятность того, что приведенный ниже запрос будет давать неверные данные. Запрос не использует никаких объединений, он просто извлекает данные из одной таблицы, основанной на каком-либо кретерии.

Select PracticeCode, AccountNo, ProcCd, Modifier , ChargeDos, Paid as Amt, CreatedDate,
       case When Paid > 0 then 'P' 
              When Paid = 0 and WrittenOff = DueAmt then 'A'
              Else 'O' 
       End as Status
     From Trn_Postings
     Where CreatedDate between @StartDateTime and @EndDateTime
                  and ManualOverride not in ('F','S','X','G','O')

1 ответ

Решение

Уровень изоляции с фиксацией чтения использует общие блокировки на уровне строк, чтобы избежать чтения грязных данных. Однако, поскольку блокировка находится на уровне строк, другие строки могут измениться до завершения транзакции, что приведет к неповторимым чтениям или фантомным данным.

Дополнительные сведения см. В документации Microsoft по УСТАНОВЛЕНИЮ УРОВНЯ ИЗОЛЯЦИИ СДЕЛКИ и в этом блоге для хорошего примера.

Другие вопросы по тегам