2010-11-24 3 views
1

클린 읽기 (읽기 커밋)를 사용하는 경우 ... 선택한 쿼리가 다른 DML (삽입, 업데이트, 삭제) 쿼리에 의해 간섭을 받습니까? 그렇다면 어떤 경우를 제공 할 수 있습니까? SQL Server 2005를 사용하고 있습니다.선택 항목이 DML에 의해 간섭을 받습니까

다음 쿼리로 잘못된 데이터가 생성 될 가능성은 무엇입니까? 쿼리는 조인을 사용하지 않고 일부 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

커밋 된 격리 수준 읽기는 더티 데이터 읽기를 방지하기 위해 행 수준에서 공유 잠금을 사용합니다. 그러나 잠금이 행 수준에 있기 때문에 트랜잭션이 완료되기 전에 다른 행이 변경되어 반복 할 수없는 읽기 또는 팬텀 데이터가 생길 수 있습니다.

자세한 내용은 SET TRANSACTION ISOLATION LEVEL 및 자세한 내용은 this blog post의 Microsoft 설명서를 참조하십시오.