2010-11-24 90 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微軟文檔一個很好的例子。