패키지에서 검사점 사용
Integration Services는 전체 패키지를 다시 실행하지 않고 오류 발생 시점에서 실패한 패키지를 다시 시작할 수 있습니다. 패키지가 검사점을 사용하도록 구성된 경우 패키지 실행에 대한 정보는 검사점 파일에 기록됩니다. 실패한 패키지가 다시 실행될 때 검사점 파일은 오류 발생 지점에서 패키지를 다시 시작하는 데 사용됩니다. 패키지가 성공적으로 실행된 경우 검사점 파일은 삭제되고 다음에 패키지가 실행될 때 다시 만들어집니다.
패키지에서 검사점을 사용하면 다음과 같은 이점이 있습니다.
큰 파일의 반복적인 다운로드 및 업로드를 피할 수 있습니다. 예를 들어 각 다운로드에 FTP 태스크를 사용하여 여러 큰 파일을 다운로드하는 패키지의 경우, 특정 파일에 대한 다운로드가 실패하면 패키지를 다시 시작하여 해당 파일만 다운로드할 수 있습니다.
대용량 데이터의 반복적인 로드를 피할 수 있습니다. 예를 들어 차원마다 다른 대량 삽입 태스크를 사용하여 데이터 웨어하우스의 차원 테이블로 대량 삽입을 수행하는 패키지의 경우, 특정 차원 테이블에 대한 삽입이 실패하면 패키지를 다시 시작할 수 있으며 해당 차원만 다시 로드됩니다.
반복적인 값 집계를 피할 수 있습니다. 예를 들어 각 집계를 수행하기 위해 별도의 데이터 흐름 태스크를 사용하여 평균 및 합계와 같은 많은 집계를 계산하는 패키지의 경우 특정 집계 계산이 실패하면 패키지를 다시 시작할 수 있으며 해당 집계만 다시 계산됩니다.
패키지가 검사점을 사용하도록 구성된 경우 Integration Services는 검사점 파일에서 다시 시작 지점을 캡처합니다. 실패한 컨테이너 유형 및 트랜잭션과 같은 기능의 구현은 검사점 파일에 기록된 다시 시작 지점에 영향을 미칩니다. 변수의 현재 값도 검사점 파일에 캡처됩니다. 그러나 Object 데이터 형식의 변수 값은 검사점 파일에 저장되지 않습니다.
패키지를 다시 시작하면 Integration Services에서 패키지 구성을 다시 로드하지 않습니다. 대신 패키지에서 검사점 파일에 기록된 구성 정보를 사용합니다. 이것은 패키지가 다시 실행될 때 패키지가 실패한 시점과 동일한 구성이 사용되도록 합니다.
다시 시작 지점 정의
다음 Integration Services 구성 요소는 검사점을 사용하여 다시 시작할 수 있는 작업의 최소 단위입니다.
태스크 단일 태스크를 캡슐화하는 태스크 호스트 컨테이너는 다시 시작할 수 있는 작업의 최소 단위입니다.
[!참고]
해당 내용을 모두 포함하는 데이터 흐름 태스크가 작업의 최소 단위이므로 데이터 흐름 도중에 패키지를 다시 시작할 수 없습니다. 전체 데이터 흐름을 다시 실행하지 않기 위해 여러 데이터 흐름 태스크를 포함하도록 패키지를 디자인할 수도 있습니다. 이 방법으로 패키지를 다시 시작하면 실패한 데이터 흐름 태스크만 다시 실행됩니다.
트랜잭션이 적용된 컨테이너 트랜잭션이 적용된 컨테이너도 다시 시작할 수 있는 작업의 최소 단위입니다. 트랜잭션이 적용된 컨테이너가 실행되고 있는 중에 패키지가 중지된 경우 트랜잭션은 중단되고 트랜잭션에 의해 수행된 모든 작업은 롤백됩니다. 그러나 검사점 파일에는 자식 컨테이너에 의해 완료된 작업에 대한 정보가 포함되어 있지 않으며 패키지를 다시 시작할 때 트랜잭션이 적용된 컨테이너와 해당 자식 컨테이너가 모두 다시 실행됩니다.
검사점과 트랜잭션 간에 있을 수 있는 충돌을 최소화하기 위해 Integration Services에서는 다음 조건 중 하나에 해당하는 경우 컨테이너 내에서 발생하는 사항에 대한 검사점 정보를 저장하지 않습니다.
컨테이너의 TransactionOption 속성 값이 Required일 경우
- 또는 -
컨테이너의 TransactionOption 속성 값이 Supported이지만 부모 컨테이너가 트랜잭션을 소유하거나 트랜잭션에 등록된 경우
[!참고]
같은 패키지에서 검사점 및 트랜잭션을 사용하면 예기치 않은 결과가 발생할 수 있습니다. 예를 들어 패키지가 실패하고 검사점에서 다시 시작되면 패키지에서 이미 성공적으로 커밋한 트랜잭션을 반복할 수 있습니다.
Foreach 루프 컨테이너 Foreach 루프 컨테이너는 다시 시작할 수 있는 다른 작업의 최소 단위입니다. 그러나 검사점 파일에는 자식 컨테이너에 의해 완료된 작업에 대한 정보가 포함되어 있지 않으며 패키지를 다시 시작할 때 Foreach 루프 컨테이너와 해당 자식 컨테이너가 모두 다시 실행됩니다.
다시 시작하도록 패키지 구성
검사점 파일에는 모든 완료된 작업 단위의 실행 결과(이 항목의 앞부분에서 설명), 시스템 및 사용자 정의 변수의 현재 값 및 패키지 구성 정보가 포함되어 있습니다. 또한 패키지의 고유 식별자도 검사점 파일에 포함됩니다. 패키지를 성공적으로 다시 시작하려면 검사점 파일에 있는 패키지 식별자가 패키지와 일치해야 하며, 그렇지 않으면 다시 시작할 수 없습니다. 이렇게 하면 패키지가 다른 패키지 버전에 의해 기록된 검사점 파일을 사용하는 것을 막을 수 있습니다. 패키지가 성공적으로 실행되면 다시 시작한 후 검사점 파일이 삭제됩니다.
다음 표에서는 검사점을 구현하기 위해 설정하는 패키지 속성을 나열합니다.
속성 |
설명 |
---|---|
CheckpointFileName |
검사점 파일의 이름을 지정합니다. |
CheckpointUsage |
검사점 사용 여부를 지정합니다. |
SaveCheckpoints |
패키지의 검사점 저장 여부를 나타냅니다. 오류 발생 시점에서 패키지를 다시 시작하려면 이 속성을 True로 설정해야 합니다. |
이 밖에도 다시 시작 지점으로 식별할 패키지 내의 모든 컨테이너에 대해 FailPackageOnFailure 속성을 true로 설정해야 합니다.
ForceExecutionResult 속성을 사용하여 패키지에 있는 검사점의 사용을 테스트할 수 있습니다. 태스크 또는 컨테이너의 ForceExecutionResult를 Failure로 설정하면 실제 오류와 동일한 오류를 만들 수 있습니다. 패키지를 다시 실행하면 실패한 태스크와 컨테이너가 다시 실행됩니다.
CheckpointUsage 속성 설정
다음 표에서는 CheckpointUsage 속성 값을 나열합니다.
값 |
설명 |
---|---|
Never |
검사점 파일을 사용하지 않고 패키지가 패키지 워크플로의 처음부터 시작되도록 지정합니다. |
Always |
검사점 파일을 항상 사용하고 패키지가 이전의 실행 오류 지점부터 다시 시작하도록 지정합니다. 검사점 파일을 찾을 수 없는 경우 패키지는 실패합니다. |
IfExists |
검사점 파일이 있는 경우 이를 사용하도록 지정합니다. 검사점 파일이 있으면 패키지는 이전 실행 오류 지점부터 다시 시작하고, 그렇지 않으면 패키지 워크플로의 처음부터 실행됩니다. |
[!참고]
dtexec의 /CheckPointing on 옵션은 패키지의 SaveCheckpoints 속성을 True로 설정하고 CheckpointUsage 속성을 Always로 설정하는 것과 같습니다. 자세한 내용은 dtexec 유틸리티를 참조하십시오.
검사점 파일의 위치 선택
Integration Services가 클러스터의 여러 노드에 설치된 장애 조치(Failover) 클러스터에서는 검사점 파일을 공유 위치로 저장할 수 있습니다. 그런 다음 장애 조치(Failover)가 발생할 경우 마지막 검사점에서 중단된 패키지를 클러스터의 다른 노드에서 다시 시작할 수 있습니다.
검사점 파일 보안 설정
패키지 수준 보호에는 검사점 파일 보호가 포함되지 않으므로 이러한 파일에 대해 보안을 별도로 설정해야 합니다. 검사점 데이터는 파일 시스템에만 저장할 수 있으므로 운영 체제의 ACL(액세스 제어 목록)을 사용하여 파일 저장 위치 또는 폴더를 보호해야 합니다. 검사점 파일에는 현재 변수 값과 같은 패키지 상태에 대한 정보가 들어 있으므로 검사점 파일에 대해 보안을 설정하는 것은 중요합니다. 예를 들어 변수에 전화 번호와 같은 개인 데이터 행이 여러 개 있는 레코드 집합이 포함될 수 있습니다. 자세한 내용은 패키지에서 사용되는 파일에 대한 액세스 제어을 참조하십시오.
검사점 속성을 구성하려면
|
변경 내역
업데이트된 내용 |
---|
|