다음을 통해 공유


트랜잭션을 사용하여 데이터 무결성 유지

패키지는 트랜잭션을 사용하여 최소 단위로 수행되는 데이터베이스 동작을 바인딩하며 이를 통해 데이터 무결성을 유지 관리합니다. 동일한 트랜잭션에 포함된 모든 데이터베이스 동작은 함께 커밋되거나 함께 롤백되므로 데이터를 일관된 상태로 유지할 수 있습니다. 예를 들어 데이터를 업데이트하고 다른 데이터베이스 테이블에 삽입하는 등 여러 데이터 흐름 태스크가 포함된 패키지는 트랜잭션을 사용하여 데이터 흐름에서 수행되는 모든 변경 작업이 모두 커밋되거나 모두 롤백되도록 할 수 있습니다. 분산 트랜잭션은 이러한 개념에서 한 단계 더 나아가 여러 운영 체제로 분산된 트랜잭션을 하나의 트랜잭션으로 바인딩할 수 있도록 합니다.

패키지에서 트랜잭션은 다음 용도로 사용될 수 있습니다.

  • 여러 태스크의 결과를 단일 트랜잭션에 수집하여 업데이트 일관성을 보장합니다. 예를 들어 다른 두 테이블에 저장된 주문 및 배송 항목에 대한 정보를 별도의 태스크로 업로드할 경우 함께 성공하거나 실패하도록 할 수 있습니다.

  • 여러 데이터베이스 서버 사이에서 업데이트 일관성을 보장합니다. 예를 들어 두 개의 다른 OLTP(온라인 트랜잭션 처리) 시스템에서 동일한 고객 주소를 동시에 변경할 수 있으며 이는 모두 하나의 트랜잭션 컨텍스트에서 수행됩니다.

  • 비동기화 환경에서도 업데이트를 보장합니다. 예를 들어 패키지는 메시지 큐 태스크를 사용하여 업로드할 파일 이름이 담긴 메시지를 읽고 삭제할 수 있습니다. 파일을 업로드하는 태스크가 실패하면 후속 롤백은 데이터베이스 변경을 취소하고 메시지를 큐로 돌려 보냅니다.

  • 단일 패키지 제어 하에서 여러 트랜잭션을 수행합니다. 예를 들어 패키지 실행 태스크를 사용하여 패키지가 세 개의 서로 다른 서버에서 트랜잭션의 종료 시퀀스를 동시에 실행할 수 있습니다.

각 작업을 캡슐화하는 For Loop, Foreach Loop, Sequence 컨테이너 및 태스크 호스트 등의 모든 Microsoft Integration Services 컨테이너는 트랜잭션을 사용하도록 구성할 수 있습니다. Integration Services는 트랜잭션 구성을 위해 NotSupported, SupportedRequired의 세 가지 옵션을 제공합니다.

  • Required는 부모 컨테이너가 이미 트랜잭션을 시작한 경우를 제외하고 컨테이너가 트랜잭션을 시작하도록 합니다. 트랜잭션이 이미 있는 경우 컨테이너는 해당 트랜잭션에 참여합니다. 예를 들어 트랜잭션을 지원하도록 구성되지 않은 패키지가 Required 옵션을 사용하는 시퀀스 컨테이너를 포함하는 경우 시퀀스 컨테이너가 자체 트랜잭션을 시작합니다. Required 옵션을 사용하도록 패키지를 구성한 경우 시퀀스 컨테이너는 패키지 트랜잭션에 참여합니다.

  • Supported는 컨테이너가 트랜잭션을 시작하지 않고 부모 컨테이너에 의해 시작된 트랜잭션에 참여하도록 합니다. 예를 들어 4개의 SQL 실행 태스크가 있는 패키지가 트랜잭션을 시작하고 4개의 태스크가 모두 Supported 옵션을 사용하는 경우 하나의 태스크라도 실패하면 SQL 실행 태스크에 의해 수행되는 데이터베이스 업데이트가 롤백됩니다. 패키지가 트랜잭션을 시작하지 않은 경우 4개의 SQL 실행 태스크는 트랜잭션에 의해 바인드되지 않으며 실패한 태스크에 의해 수행된 것을 제외한 어떤 데이터베이스 업데이트도 롤백되지 않습니다.

  • NotSupported는 컨테이너가 트랜잭션을 시작하거나 기존 트랜잭션에 참여하지 않도록 합니다. 부모 컨테이너에 의해 시작된 트랜잭션은 트랜잭션을 지원하지 않도록 구성된 자식 컨테이너에 영향을 미치지 않습니다. 예를 들어 패키지가 트랜잭션을 시작하도록 구성되어 있고 패키지에 있는 For Loop 컨테이너가 NotSupported 옵션을 사용하는 경우 For Loop에 있는 모든 태스크는 실패하더라도 롤백될 수 없습니다.

컨테이너에서 TransactionOption 속성을 설정하여 트랜잭션을 구성할 수 있습니다. 이 속성은 Business Intelligence Development Studio의 속성 창을 사용하여 설정하거나 프로그래밍 방식으로 설정할 수 있습니다. 자세한 내용은 개발자 가이드(Integration Services)를 참조하십시오.

[!참고]

TransactionOption 속성은 컨테이너에서 요청하는 IsolationLevel 속성 값의 적용 여부에 영향을 줍니다. 자세한 내용은 패키지 속성 설정 항목의 IsolationLevel 속성에 대한 설명을 참조하십시오.

트랜잭션을 사용하도록 패키지를 구성하려면

외부 리소스

Integration Services 아이콘(작은 아이콘) Integration Services 관련 최신 정보 얻기

Microsoft의 최신 다운로드, 아티클, 예제 및 비디오와 커뮤니티의 정선된 솔루션을 보려면 MSDN 또는 TechNet의 Integration Services 페이지를 방문하십시오.

이러한 업데이트에 대한 자동 알림을 받으려면 해당 페이지에서 제공하는 RSS 피드를 구독하십시오.