2010-11-24 94 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

读提交隔离级别在行级使用共享锁,以避免读脏数据。但是,由于锁定位于行级别,因此其他行可能会在事务完成之前发生更改,从而导致不可重复的读取或幻像数据。

查看SET TRANSACTION ISOLATION LEVEL更多的细节和this blog post微软文档一个很好的例子。