트랜잭션 – 패키지에서 트랜잭션을 제어하자

 

안녕하세요 강성욱 입니다.(www.sqltag.org, www.sqler.com, http://blog.naver.com/jevida)

이번 시간에는 트랜잭션에 대해서 알아 보도록 하겠습니다.

 

SQL Server SSIS에서는 데이터베이스 작업에 대해서 트랜잭션을 지원 합니다. 여러 작업들이 하나의 트랜잭션으로 구성되어 있을 때 모든 작업이 성공해야 커밋되고 그렇지 않을 경우 롤백이 되도록 설정 할 수 있습니다.

패키지 전체 또는 일부 작업들에(컨테이너 단위)대해 트랜잭션을 이용하여 데이터 무결성을 관리 할 수 있는 기능 입니다.

 

SSIS의 모든 작업 개체 및 컨테이너 속성에서 TransactionOption을 설정할 수 있지만 트랜잭션은 데이터베이스 관련작업 개체에서만 적용 됩니다.

 

[BIDS]를 실행하여 [Integration Services 프로젝트]를 실행 합니다.

 

 

[제어 흐름] 탭에서 아래 그림과 같이 작업을 끌어다 놓습니다.

 

속성 창에서 [TransactionOption] 을 [Supported]로 설정 합니다.

 

[TransactionOption 옵션]

  • Required – 선택한 개체가 트랜잭션을 생성. 만약 선택한 개체가 부모 컨테이너에 포함되어 있으며 부모 컨테이너에서 트랜잭션이 생성되도록 설정되어 있는 경우에는 Supported 설정과 동일한 방식으로 부모 컨테이너의 트랜잭션에 참여. 만약 패키지는 Not Required로 설정되어 있더라도 패키지 내에 있는 시퀀스 컨테이너의 트랜잭션 속성이 Required로 설정된 경우 시퀀스 컨테이너는 트랜잭션을 생성하며 이 컨테이너 내에 포함되는 작업들(Not Required 설정된 작업 제외)에는 트랜잭션이 적용.
  • Supported – 선택한 개체가 새로운 트랜잭션을 생성하지는 않고 단지 부모 컨테이너의 트랜잭션에 참여만 함. 예를 들어 패키지는 트랜잭션을 생성하는 Required로 설정이 되어 있으며 패키지 내에 포함된 세 개의 SQL 실행 작업들은 Supported로 설정 되어 있는 경우 각각의 SQL 실행 작업은 부모 컨테이너인 패키지의 트랜잭션에 참여하게 되며 세 작업 중 하나라도 실패하면 전체 작업이 롤백 됩니다.
  • Not Required – 선택한 개체가 새로운 트랜잭션을 생성하지도 않으며 부모 컨테이너의 트랜잭션에 참여하지도 않습니다.

 

 

 

패키지를 실행 합니다. 아무런 응답이 없거나 패키지 실행 자체가 실패하였다면 다음과 같이 [진행률] 탭을 확인 합니다.

 

SSIS에서 트랜잭션을 사용하기 위해서는 패키지가 수행되는 서버 또는 PC에 MSDTC 서비스가 실행되고 있어야 합니다.

 

MSTC 관련 링크

http://blog.naver.com/jevida/140151557692

 

 

MSDTC 설명이 완료 되었으면 패키지를 실행 합니다.

그림과 같이 [SQL 실행 태스크]와 [파일 시스템 태스크]는 정상 실행 되었으며 [SQL 실행 태스크1]작업만 실패 하였습니다.

 

[SQL 실행 태스크]의 작업이 롤백 되었음을 확인 할 수 있습니다. 하지만 [파일 시스템 태스크]의 작업은 롤백이 되지 않았습니다. SSIS의 트랜잭션은 데이터베이스 작업에만 해당 됩니다.

 

 

데이터베이스와 관련된 작업이 아닌 경우에도 트랜잭션이 필요한 이유가 있습니다.

아래 그림과 같이 작업의 순서를 수정 합니다.

[SQL 실행 태스크](정상 실행) -> [SQL 실행 태스크1](정상 실행) -> [파일 시스템 태스크](작업 실패)

패키지를 실행 합니다.

 

데이터베이스 작업 1,2는 정상 실행 되었지만 파일 시스템 작업의 실패로 인하여 전체 롤백이 된 것을 확인 할 수 있습니다. 파일 시스템 작업이 트랜잭션의 처리 결과에 대해 커밋이나 롤백 할 작업은 아니지만 트랜잭션에 영향을 미칠 수 있는 개체 이기 때문입니다.

 

 

패키지에서 모든 작업을 정상 실행 하도록 수정하여 패키지를 실행 합니다.

 

[SQL 실행 태스크], [SQL 실행 태스크1], [파일 시스템 태스크] 모든 작업이 완료되고 정상적으로 파일 복사 및 데이터베이스 작업이 커밋 된 것을 확인 할 수 있습니다. 



강성욱 / jevida@naver.com
Microsoft SQL Server MVP
Blog : http://sqlmvp.kr
Facebook : http://facebook.com/sqlmvp



No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 20076
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 12120
1574 SSAS 부모-자식 차원 - 부모자식 차원 생성 jevida(강성욱) 2013.10.14 6034
1573 SSAS 차원 - (3) 롤-플레잉 차원 jevida(강성욱) 2013.10.14 6108
1572 SSAS 차원 - (2) 시간 차원 jevida(강성욱) 2013.10.14 6060
1571 SSAS 차원 - (1) 표준 차원 jevida(강성욱) 2013.10.14 5765
1570 SSAS - 큐브 조회 jevida(강성욱) 2013.10.07 8013
1569 SSAS - 큐브 만들기 jevida(강성욱) 2013.10.07 9238
1568 SSAS - SSAS 환경 설정 jevida(강성욱) 2013.10.07 9328
1567 SSIS - BIDS 임시 파일 위치 설정 jevida(강성욱) 2013.10.02 8819
1566 SSIS - SSIS패키지 실행 하기. – Job Agent 등록 및 수동 실행 jevida(강성욱) 2013.10.02 15725
1565 SSIS - 패키지 저장 방식의 종류 및 장점. jevida(강성욱) 2013.10.02 8379
1564 SSIS - 성능 카운터 - SSIS를 튜닝 하자 jevida(강성욱) 2013.10.02 9313
1563 SSIS - 배포 및 배포 마법사 jevida(강성욱) 2013.10.02 11133
1562 SSIS - 로깅 - SSIS의 실행 정보를 로깅하자 jevida(강성욱) 2013.10.02 7661
1561 SSIS - 보안 - 보안레벨에 따른 암호화 수준. jevida(강성욱) 2013.10.02 9225
» SSIS - 트랜잭션 - 패키지에서 트랜잭션을 제어 하자 jevida(강성욱) 2013.10.02 7581
1559 SSIS -스크립트 작업 및 ActiveX 스크립트 작업 jevida(강성욱) 2013.10.02 9043
1558 SSIS - SQL 실행 작업 jevida(강성욱) 2013.10.02 12121
1557 SSIS - WMI 이벤트 감시자 작업 jevida(강성욱) 2013.09.25 8416
1556 SSIS - WMI 데이터 판독기 작업 jevida(강성욱) 2013.09.25 7658
1555 SSIS - FTP 작업 jevida(강성욱) 2013.09.25 9635





XE Login