패키지 자동으로 재 실행하도록 설정하기
한대성
Microsoft Premier Field Engineer
|
다름이 아니라 SSIS에서 패키지 실패나 TASK 실패시 자동 재실행 설정방법이 있는지요? 사유는 저희가 해외 사이트에서 추출할 일이 많은데, 네트워크 문제로 자주 끊어짐 현상이 발생합니다. 중간에 특정 해외 사이트 TASK 가 끊어질 때 다시 재실행 하는 방법이 있으면 좋겠네요. ^ |
우선 다음과 같이 패키지 내의 모든 작업 개체에 대해 FailPackageOnFailure 속성을 True로 설정합니다.
그리고, 데이터 흐름의 빈 영역을 선택한 후, 아래와 같이 검사점(CheckPoint)을 설정합니다.
검사점 설정과 관련되어서는 다음 글을 참고하세요.
http://www.sqlleader.com/mboard.asp?exec=view&strBoardID=SS2005SSIS&intSeq=456
이제, 부모 패키지를 구성합니다.
다음과 같이 CheckFileExist라는 변수를 추가하고 기본 값을 Y로 설정합시다. 또한 RetryCnt 라는 Int32형 변수를 추가하고 초기값을 0으로 설정합시다.
다음과 같이 For 루프 컨테이너를 추가하고 속성의 EvalExpression 부분에
@@CheckFileExist == “Y” && @RetryCnt <=10 라는 식을 입력합시다.
이제 For 루프 컨테이너 내에 패키지 실행 작업을 추가하고 실행시킬 패키지를 지정합니다.
패키지 실행 작업을 선택한 후, ForceExecutionResult를 Success로 설정합니다. 실패가 나더라도 무조건 이 작업 개체(패키지 실행 작업)를 성공으로 처리하고자 하는 것이지요.
이제 스크립트 파일을 추가한 후, 다음과 같이 패키지 실행 작업과 연결합니다.
스크립트 작업의 ReadWriteVariable 속성에 CheckFileExist와 RetryCnt라는 변수를 지정하고,
다음과 같은 스크립트를 입력합니다.
Imports System Imports System.Data Imports System.Math Imports Microsoft.SqlServer.Dts.Runtime Imports System.IO
Public Class ScriptMain
' The execution engine calls this method when the task executes. ' To access the object model, use the Dts object. Connections, variables, events, ' and logging features are available as static members of the Dts class. ' Before returning from this method, set the value of Dts.TaskResult to indicate success or failure. ' ' To open Code and Text Editor Help, press F1. ' To open Object Browser, press Ctrl+Alt+J.
Public Sub Main() ' ' Add your code here ' If File.Exists("D:\PackageErrorCheck.log") Then Dts.Variables("CheckFileExist").Value = "Y" Dts.Variables("RetryCnt").Value = CInt(Dts.Variables("RetryCnt").Value) + 1
Else Dts.Variables("CheckFileExist").Value = "N" End If Dts.TaskResult = Dts.Results.Success End Sub
End Class |
즉, 위에서 설정한 Check 파일이 있을 때에는(=에러가 발생했을 때에는) CheckFileExist의 값을 “Y”로 설정하고, RetryCnt 값을 1 증가시킵니다.
임의로 자식 패키지의 스크립트 작업 2를 실패로 처리하고 패키지를 수행하면 다음과 같이 10번 반복되는 결과를 볼 수 있습니다.
다시 정상적으로 해당 작업을 성공으로 설정하면 한 번만 수행됩니다.
'연구개발 > DTS & SSIS' 카테고리의 다른 글
패키지 외부에서 매개 변수 값 지정하기 (0) | 2011.08.27 |
---|---|
FTP 작업에서 여러 파일 보내기 (0) | 2011.08.27 |
DTS 마이그레이션 관련사항 (0) | 2011.08.27 |
조회 변환 및 OLE DB 명령 변환을 이용한 데이터 처리 (0) | 2011.08.27 |
구성 기능을 이용하여 패키지 연결 정보 관리하기 (0) | 2011.08.27 |