검사점을 사용하여 패키지 다시 시작
적용 대상: SQL Server Azure Data Factory의 SSIS Integration Runtime
Integration Services는 전체 패키지를 다시 실행하지 않고 오류 발생 시점에서 실패한 패키지를 다시 시작할 수 있습니다. 패키지가 검사점을 사용하도록 구성된 경우 패키지 실행에 대한 정보는 검사점 파일에 기록됩니다. 실패한 패키지가 다시 실행될 때 검사점 파일은 오류 발생 지점에서 패키지를 다시 시작하는 데 사용됩니다. 패키지가 성공적으로 실행된 경우 검사점 파일은 삭제되고 다음에 패키지가 실행될 때 다시 만들어집니다.
패키지에서 검사점을 사용하면 다음과 같은 이점이 제공됩니다.
대용량 파일의 다운로드 및 업로드를 반복하지 마세요. 예를 들어 각 다운로드에 대해 FTP 작업을 사용하여 여러 대용량 파일을 다운로드하는 패키지는 단일 파일 다운로드가 실패한 후 다시 시작한 다음 해당 파일만 다운로드할 수 있습니다.
대용량 데이터의 반복적인 로드를 피할 수 있습니다. 예를 들어 각 차원에 대해 다른 대량 삽입 작업을 사용하여 데이터 웨어하우스의 차원 테이블에 대량 삽입을 수행하는 패키지는 한 차원 테이블에 대해 삽입이 실패하고 해당 차원만 다시 로드될 경우 다시 시작할 수 있습니다.
값의 집계를 반복하지 않습니다. 예를 들어 각 집계를 수행하기 위해 별도의 데이터 흐름 태스크를 사용하여 평균 및 합계와 같은 많은 집계를 계산하는 패키지는 집계 계산이 실패하고 해당 집계만 다시 계산한 후에 다시 시작할 수 있습니다.
패키지가 검사점을 사용하도록 구성된 경우 Integration Services는 검사점 파일에서 다시 시작 지점을 캡처합니다. 실패하는 컨테이너의 형식 및 트랜잭션과 같은 기능의 구현은 검사점 파일에 기록된 다시 시작 지점에 영향을 줍니다. 변수의 현재 값도 검사점 파일에서 캡처됩니다. 그러나 개체 데이터 형식이 있는 변수의 값은 검사점 파일에 저장되지 않습니다.
다시 시작 지점 정의
단일 작업을 캡슐화하는 태스크 호스트 컨테이너는 다시 시작할 수 있는 가장 작은 원자성 작업 단위입니다. Foreach 루프 컨테이너 및 트랜잭션된 컨테이너도 원자 단위로 처리됩니다.
트랜잭션된 컨테이너가 실행되는 동안 패키지가 중지되면 트랜잭션이 종료되고 컨테이너에서 수행하는 모든 작업이 롤백됩니다. 패키지를 다시 시작하면 실패한 컨테이너가 다시 실행됩니다. 트랜잭션된 컨테이너의 자식 컨테이너 완료는 검사점 파일에 기록되지 않습니다. 따라서 패키지를 다시 시작하면 트랜잭션된 컨테이너와 해당 자식 컨테이너가 다시 실행됩니다.
참고 항목
동일한 패키지에서 검사점 및 트랜잭션을 사용하면 예기치 않은 결과가 발생할 수 있습니다. 예를 들어 패키지가 실패하고 검사점에서 다시 시작되면 패키지에서 이미 성공적으로 커밋한 트랜잭션을 반복할 수 있습니다.
For 루프 및 Foreach 루프 컨테이너에 대한 검사점 데이터는 저장되지 않습니다. 패키지를 다시 시작하면 For 루프 및 Foreach 루프 컨테이너와 자식 컨테이너가 다시 실행됩니다. 루프의 자식 컨테이너가 성공적으로 실행되면 검사점 파일에 기록되지 않고 다시 실행됩니다. 자세한 내용 및 해결 방법은 For 루프 또는 Foreach 루프 컨테이너 항목에 대해 SSIS 검사점이 적용되지 않음을 참조하세요.
패키지를 다시 시작하면 패키지 구성이 다시 로드되지 않고 대신 패키지는 검사점 파일에 기록된 구성 정보를 사용합니다. 이렇게 하면 패키지가 실패한 시간과 동일한 구성을 다시 실행할 때 사용됩니다.
패키지는 제어 흐름 수준에서만 다시 시작할 수 있습니다. 데이터 흐름 중간에 패키지를 다시 시작할 수 없습니다. 전체 데이터 흐름을 다시 실행하지 않도록 패키지는 서로 다른 데이터 흐름 태스크를 사용하는 여러 데이터 흐름을 포함하도록 설계될 수 있습니다. 이 방법으로 하나의 데이터 흐름 태스크만 다시 실행하여 패키지를 다시 시작할 수 있습니다.
다시 시작하도록 패키지 구성
검사점 파일에는 완료된 모든 컨테이너의 실행 결과, 시스템 및 사용자 정의 변수의 현재 값 및 패키지 구성 정보가 포함됩니다. 파일에는 패키지의 고유 식별자도 포함됩니다. 패키지를 성공적으로 다시 시작하려면 검사점 파일의 패키지 식별자와 패키지가 일치해야 합니다. 그렇지 않으면 다시 시작이 실패합니다. 이렇게 하면 패키지가 다른 패키지 버전으로 작성된 검사점 파일을 사용할 수 없습니다. 패키지가 성공적으로 실행되면 다시 시작한 후 검사점 파일이 삭제됩니다.
다음 표에서는 검사점을 구현하도록 설정한 패키지 속성을 나열합니다.
속성 | 설명 |
---|---|
CheckpointFileName | 검사점 파일 이름을 지정합니다. |
CheckpointUsage | 검사점 사용 여부를 지정합니다. |
SaveCheckpoints | 패키지에서 검사점을 저장할지 여부를 나타냅니다. 오류 발생 시점에서 패키지를 다시 시작하려면 이 속성을 True로 설정해야 합니다. |
또한 다시 시작 지점으로 식별하려는 패키지의 모든 컨테이너에 대해 FailPackageOnFailure 속성을 true로 설정해야 합니다.
ForceExecutionResult 속성을 사용하여 패키지에서 검사점 사용을 테스트할 수 있습니다. 태스크 또는 컨테이너의 ForceExecutionResult를 실패로 설정하면 실시간 오류를 모방할 수 있습니다. 패키지를 다시 실행하면 실패한 작업 및 컨테이너가 다시 실행됩니다.
검사점 사용량
CheckpointUsage 속성은 다음 값으로 설정할 수 있습니다.
값 | 설명 |
---|---|
Never | 검사점 파일이 사용되지 않고 패키지 워크플로의 시작부터 패키지가 실행되도록 지정합니다. |
Always | 검사점 파일을 항상 사용하고 패키지가 이전의 실행 오류 지점부터 다시 시작하도록 지정합니다. 검사점 파일을 찾을 수 없으면 패키지가 실패합니다. |
IfExists | 검사점 파일이 있는 경우 이를 사용하도록 지정합니다. 검사점 파일이 있는 경우 패키지는 이전 실행 실패 지점에서 다시 시작됩니다. 그렇지 않으면 패키지 워크플로의 시작부터 실행됩니다. |
참고 항목
dtexec의 /CheckPointing on 옵션은 패키지의 SaveCheckpoints 속성을 True로 설정하고 CheckpointUsage 속성을 Always로 설정하는 것과 같습니다. 자세한 내용은 dtexec Utility를 참조하세요.
검사점 파일 보안
패키지 수준 보호에는 검사점 파일 보호가 포함되지 않으므로 이러한 파일에 대해 보안을 별도로 설정해야 합니다. 검사점 데이터는 파일 시스템에만 저장할 수 있으며 ACL(운영 체제 액세스 제어 목록)을 사용하여 파일을 저장하는 위치 또는 폴더를 보호해야 합니다. 현재 변수 값을 포함하여 패키지 상태에 대한 정보가 포함되어 있으므로 검사점 파일을 보호하는 것이 중요합니다. 예를 들어 변수에 전화 번호와 같은 프라이빗 데이터 행이 여러 개 있는 레코드 집합이 포함될 수 있습니다. 자세한 내용은 패키지에서 사용하는 파일에 대한 액세스를 참조하세요.
실패한 패키지를 다시 시작하기 위한 검사점 구성
검사점에 적용되는 속성을 설정하여 전체 패키지를 다시 실행하는 대신 장애 지점에서 Integration Services 패키지를 다시 시작하도록 구성합니다.
패키지를 다시 시작하도록 구성하려면
SSDT(SQL Server Data Tools)에서 구성하기 원하는 패키지가 들어 있는 Integration Services 프로젝트를 엽니다.
솔루션 탐색기에서 패키지를 두 번 클릭하여 엽니다.
제어 흐름 탭을 클릭합니다.
제어 흐름 디자인 화면 배경의 아무 곳이나 마우스 오른쪽 단추로 클릭한 다음, 속성을 선택합니다.
SaveCheckpoints 속성을 True로 설정합니다.
CheckpointFileName 속성에 검사점 파일의 이름을 입력합니다.
CheckpointUsage 속성을 다음 두 값 중 하나로 설정합니다.
항상 검사점에서 패키지를 다시 시작하려면 항상을 선택합니다.
Important
검사점 파일을 사용할 수 없는 경우 오류가 발생합니다.
검사점 파일이 있는 경우에만 패키지를 다시 시작하려면 IfExists를 선택합니다.
패키지가 다시 시작될 수 있는 태스크 및 컨테이너를 구성합니다.
작업 또는 컨테이너를 마우스 오른쪽 단추로 클릭하고 속성을 클릭합니다.
선택한 각 작업 및 컨테이너에 대해 FailPackageOnFailure 속성을 True 로 설정합니다.
외부 리소스
지원 문서에서 support.microsoft.com에 SSIS 검사점은 For 루프 또는 Foreach 루프 컨테이너 항목에 적용되지 않습니다.