选择是否会被DML干扰

时间:2010-11-24 14:24:34

标签: sql-server-2005 dirtyread

使用干净读取(Read committed)时...选择查询是否会受到另一个DML(插入,更新,删除)查询的干扰?如果是的话,你能否提供一些案例。我正在使用SQL Server 2005。

以下查询产生错误数据的可能性是什么。查询不使用任何连接,它只是基于某个creteria从单个表中获取数据。

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 个答案:

答案 0 :(得分:1)

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

有关其他详细信息,请参阅SET TRANSACTION ISOLATION LEVEL上的Microsoft文档;有关示例,请参阅this blog post