2010-11-24 3 views
1

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

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

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 по телефону SET TRANSACTION ISOLATION LEVEL и this blog post.