문제

나는 이에 퍼지 종류의 방법으로,어떻게 정규산 트랜잭션을 작동합니다.당신이 수행하는 몇 가지 작업에서 데이터베이스는 방식으로 작동하는지 확인 될 때까지 어떤 종류의 깃발을 설정합니다.커미 부분은 기반에서 몇 가지 기본 가정(처럼 단일 디스크 블록의 작성은 원자).에서 이벤트의 치명적인 오류가할 수 있습 취소 uncommitted 데이터 복구 단계입니다.

어떻게 분산 트랜잭션을 작동하는가?에서의 일부 MS 설명서가 읽을 수 있는 어떻게든 트랜잭션을 수행하는 데이터베이스와 파일시스템(다른 것들 중에서).

이 기술이 될 수 있는(아마도)사용에 대한 설치할 프로그램을 완전히 설치되거나 완전히 존재하지 않는다.당신은 단순히 시작하는 트랜잭션의 시작에서 설치 프로그램입니다.다음 연결할 수 있습을 레지스트리와 파일시스템을 만들고,변경 사항을 정의하는 설치합니다.작업이 완료되면,단순히 커밋거나,rollback 설치가 실패하는 경우 어떤 이유입니다.레지스트리와 파일시스템은 자동으로 청소는 당신을 위해 이는 마법의 분산 트랜잭션 코디네이터로 활동하고 있습니다.

어떻게 그것이 가능한 것 서로 다른 두 시스템을 수 있습 트랜잭션에 따라 이 패션?그것은 그것을 떠나 시스템이 일관성이 없는 상태에서,어디서 파일시스템은 그것의 변경 및 레지스트리 하지 않았습니다.나는 생각에서 MSDTC 그것은 트랜잭션을 수행하는 네트워크를 통해.

I have read http://blogs.msdn.com/florinlazar/archive/2004/03/04/84199.aspx, 지만,그것은 같은 느낌이만의 시작을 설명하는 4 단계로 확장되어야 합니다.

편집: 내가 무엇을 수집에 http://en.wikipedia.org/wiki/Distributed_transaction, 수에 의해 수행하거(http://en.wikipedia.org/wiki/Two-phase_commit).이것을 읽은 후에,나는 여전히 이해하지 않는 방법 100%,하는 것이 가장 많이 방의 오류에 대한 사 단계가 있습니다.

도움이 되었습니까?

해결책

에 대해 단계"4":

트랜잭션 관리자 좌표 리소스 관리자는지 확인 모두 성공하도록 요청 작업 또는 작동하는 경우,라 을 유지하는 산성.

이 과정에 필요한 모든 참가자들이 제공한 적절한 인터페이스(오류가 무료)구현이 있습니다.인터페이스처럼 보이는 막연하게 this:

public interface ITransactionParticipant {
    bool WouldCommitWork();
    void Commit();
    void Rollback();
}

트랜잭션 관리에 투입하는 시간을 쿼리 모든 참가자는지 그들은 기꺼이 commit the transaction.참가자들 수 있습니다만 이런 주장하는 경우 그들은 일을 할 수 있습이 트랜잭션에서 허용 가능한 모든 오류 조건에(유효성 검사,시스템 오류,etc.).후에는 모든 참가자가 주장하는 능력을 투입,트랜잭션 관리자를 보냅 Commit() 모든 참가자가 있습니다.는 경우에는 모든 참가자가 대신에 오류가 발생하거나 시간,전체적인 트랜잭션이 중단되고 개별 구성원은니다.

이 프로토콜 필요한 참가자가 기록한 그들의 전체 트랜잭션 내용하기 전에 주장하는 그들의 능력입니다.물론 이 이야에서 특별한 지역 거래 로그인 구조를 복구할 수 있으려면에서 다양한 종류의 오류입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top