2011-03-17 3 views
0

데이터베이스와 상호 작용하는 .NET 응용 프로그램을 개발 중입니다. 메서드에서 나는 SQL 트랜잭션을 시작하고 table1의 데이터를 사용하여 table2의 업데이트 값으로 이동하기 위해 Threading.Thread을 시작하여 변경 사항을 완료 한 후에도 table1의 일부 값을 수정합니다 (아직 트랜잭션을 커밋하지 않았습니다).트랜잭션이 실행되는 동안 데이터베이스의 변경 내용에 액세스

이 스레드가 수정 된 값을 읽습니까? 또는 트랜잭션이 시작되기 전에 데이터를로드합니까?

답변

2

두 번째 스레드가 트랜잭션이 시작된 동일한 연결/세션을 사용하는지 여부에 따라 다릅니다. 그럴 경우 해당 트랜잭션 중 지금까지 변경된 사항을 볼 수 있습니다. 다른 연결 인 경우 커밋 될 때까지 변경 내용이 눈에 띄지 않습니다.

2

RepeatableRead 또는 ReadUncommitted 두 번째 스레드의 트랜잭션에 대한 트랜잭션 격리 수준을 사용하면 table1에서 커밋되지 않은 데이터를 읽을 수 있습니다. 트랜잭션 격리 수준에

상세 정보 :

IsolationLevel Enumeration

Set Transaction Isolation Level (Transact-SQL)

다른 사용자가 데이터를 읽고 표 2를 업데이트하기 전에 표에 기록되어 있는지 확인하는 방법 질문이지만,이 달려있다 . NET 응용 프로그램 구현에.

관련 문제