패키지에서 로깅 구현

Integration Services에는 런타임 이벤트 발생 시 로그 항목을 쓰고 사용자 지정 메시지를 작성할 수도 있는 로깅 기능이 포함되어 있습니다.

Integration Services는 다양한 로그 공급자 집합을 지원하며 사용자 지정 로그 공급자를 만드는 기능을 제공합니다. Integration Services 로그 공급자는 텍스트 파일, SQL Server 프로파일러, SQL Server, Windows 이벤트 로그 또는 XML 파일에 로그 항목을 쓸 수 있습니다.

로그는 패키지와 연결되며 패키지 수준에서 구성됩니다. 패키지에 있는 각 태스크나 컨테이너는 패키지 로그에 정보를 로깅할 수 있습니다. 패키지 자체가 로깅을 사용하도록 설정되지 않았더라도 패키지의 태스크 및 컨테이너는 로깅을 사용하도록 설정될 수 있습니다. 예를 들어 부모 패키지가 로깅을 사용하지 않더라도 SQL 실행 태스크는 로깅을 사용할 수 있습니다. 패키지, 컨테이너 또는 태스크는 여러 로그에 쓸 수 있습니다. 패키지에만 로깅을 사용하도록 설정하거나 패키지에 포함된 개별 태스크 또는 컨테이너에 로깅을 사용하도록 설정할 수 있습니다.

이벤트 또는 사용자 지정 메시지 로깅을 사용자 지정하기 위해 Integration Services는 로그 항목에 포함할 자주 로깅되는 정보를 담은 스키마를 제공합니다. Integration Services 로그 스키마는 로깅할 수 있는 정보를 정의합니다. 로그 스키마에서 요소를 선택하여 각 로그 항목으로 사용할 수 있습니다.

패키지 및 패키지에 포함된 컨테이너와 태스크는 같은 정보를 로깅할 필요가 없으며 같은 패키지나 컨테이너 내에 있는 태스크가 서로 다른 정보를 로깅할 수 있습니다. 예를 들어 패키지는 시작할 때 작업자 정보를 로깅하고, 한 태스크는 태스크가 실패한 컨테이너 또는 태스크 이름을 로깅하며, 다른 태스크는 오류가 발생한 시각을 로깅할 수 있습니다. 패키지 및 패키지에 포함된 컨테이너와 태스크가 여러 로그를 사용하는 경우 같은 정보가 모든 로그에 기록됩니다.

필요에 따라 로깅할 이벤트 및 각 이벤트에 대해 로깅할 정보를 지정하여 로깅 수준을 선택할 수 있습니다. 일부 이벤트가 다른 이벤트보다 더 유용한 정보를 제공하는 경우가 있습니다. 예를 들어 이벤트의 중요성에 따라 PreExecute 이벤트에 대해서는 컴퓨터 및 작업자 이름만 로깅하고 Error 이벤트에 대해서는 모든 사용 가능한 정보를 로깅할 수 있습니다.

로그 파일이 많은 디스크 공간을 사용하거나 과도한 로깅 작업을 하여 성능이 저하되는 것을 막기 위해 로깅할 특정 이벤트 및 정보 항목을 지정하여 로깅을 제한할 수 있습니다. 예를 들어 각 오류의 날짜 및 컴퓨터 이름만 캡처하도록 로그를 구성할 수 있습니다.

SSIS 디자이너에서 SSIS 로그 구성 대화 상자를 사용하여 로깅 옵션을 정의할 수 있습니다.

로그 스키마

다음 표에서는 로그 스키마의 요소에 대해 설명합니다.

요소

설명

Computer

로그 이벤트가 발생한 컴퓨터의 이름입니다.

연산자

패키지를 시작한 사용자의 ID입니다.

SourceName

로그 이벤트가 발생한 컨테이너 또는 태스크의 이름입니다.

SourceID

로그 이벤트가 발생한 패키지, For Loop, Foreach Loop, 시퀀스 컨테이너 또는 태스크의 고유 식별자입니다.

ExecutionID

패키지 실행 인스턴스의 GUID입니다.

참고참고
단일 패키지를 실행하면 ExecutionID 요소에 대한 여러 값이 포함된 로그 항목이 만들어질 수 있습니다. 예를 들어 BI Development Studio에서 패키지를 실행하면 유효성 검사 단계에서 BI Development Studio에 해당하는 ExecutionID 요소가 포함된 로그 항목이 만들어질 수 있습니다. 그러나 실행 단계에서는 dtshost.exe에 해당하는 ExecutionID 요소가 포함된 로그 항목이 만들어질 수 있습니다. 또 Execute Package 태스크가 포함된 패키지를 실행하면 이러한 각 태스크가 자식 패키지를 실행합니다. 이러한 자식 패키지는 부모 패키지에서 만든 로그 항목과 다른 ExecutionID 요소가 포함된 로그 항목을 만들 수 있습니다.

MessageText

로그 항목과 연결된 메시지입니다.

DataBytes

로그 항목과 관련된 바이트 배열입니다. 이 필드의 의미는 로그 항목에 따라 다릅니다.

다음 표에서는 SSIS 로그 구성 대화 상자의 자세히 탭에서 사용할 수 없는 로그 스키마의 세 가지 추가 요소에 대해 설명합니다.

요소

설명

StartTime

컨테이너 또는 태스크가 실행되기 시작하는 시간입니다.

EndTime

컨테이너 또는 태스크의 실행이 중지되는 시간입니다.

DataCode

일반적으로 다음과 같이 컨테이너 또는 태스크 실행의 결과를 나타내는 DTSExecResult 열거형의 값을 포함하는 선택적 정수 값입니다.

  • 0 - 성공

  • 1 - 실패

  • 2 - 완료

  • 3 - 취소됨

로그 항목

Integration Services는 미리 정의된 이벤트에 대한 로그 항목을 지원하고 여러 Integration Services 개체에 대한 사용자 지정 로그 항목을 제공합니다. SSIS 디자이너의 SSIS 로그 구성 대화 상자에 이러한 이벤트와 사용자 지정 로그 항목이 나열됩니다.

다음 표에서는 런타임 이벤트가 발생했을 때 로그 항목을 쓰도록 설정할 수 있는 미리 정의된 이벤트에 대해 설명합니다. 이러한 로그 항목은 실행 파일과 패키지, 그리고 패키지에 포함된 태스크 및 컨테이너에 적용됩니다. 로그 항목의 이름은 발생한 런타임 이벤트의 이름, 즉 로그 항목을 쓰도록 만든 이벤트의 이름과 같습니다.

이벤트

설명

OnError

오류가 발생할 때 로그 항목을 기록합니다.

OnExecStatusChanged

실행 파일의 실행 상태가 변경될 때 로그 항목을 기록합니다.

OnInformation

정보 보고를 위한 실행 파일의 유효성 검사 및 실행 중에 로그 항목을 기록합니다.

OnPostExecute

실행 파일이 실행을 완료한 직후에 로그 항목을 기록합니다.

OnPostValidate

실행 파일의 유효성 검사가 완료될 때 로그 항목을 기록합니다.

OnPreExecute

실행 파일이 실행하기 직전에 로그 항목을 기록합니다.

OnPreValidate

실행 파일의 유효성 검사가 시작할 때 로그 항목을 기록합니다.

OnProgress

실행 파일이 특정 진행 상태에 도달했을 때 로그 항목을 기록합니다.

OnQueryCancel

실행을 취소할 수 있는 태스크 처리 과정의 모든 분기 시점에 로그 항목을 기록합니다.

OnTaskFailed

태스크가 실패할 때 로그 항목을 기록합니다.

OnVariableValueChanged

변수의 값이 변경될 때 로그 항목을 기록합니다.

OnWarning

경고가 발생할 때 로그 항목을 기록합니다.

PipelineComponentTime

각 데이터 흐름 구성 요소에 대해 유효성 검사 및 실행의 각 단계에 대한 로그 항목을 기록합니다. 로그 항목에서는 각 단계의 처리 시간을 지정합니다.

Diagnostic

진단 정보를 제공하는 로그 항목을 기록합니다.

예를 들어 외부 데이터 공급자에 대한 각 호출 전후의 메시지를 기록할 수 있습니다. 자세한 내용은 패키지 실행 문제 해결을 참조하십시오.

패키지 및 여러 태스크에는 로깅을 사용하도록 설정할 수 있는 사용자 지정 로그 항목이 있습니다. 예를 들어 메일 보내기 태스크는 태스크가 시작되어 전자 메일 메시지를 보내기 전에 정보를 로깅하는 SendMailTaskBegin 사용자 지정 로그 항목을 제공합니다. 자세한 내용은 로깅할 메시지 사용자 지정을 참조하십시오.

패키지 복사본 구분

로그 데이터에는 로그 항목이 속하는 패키지의 이름 및 GUID가 포함됩니다. 기존 패키지를 복사하여 새 패키지를 만들 경우 기존 패키지의 이름 및 GUID도 복사됩니다. 따라서 이름과 GUID가 동일한 두 개의 패키지가 있을 수 있으며 이로 인해 로그 데이터에 있는 패키지를 구분하기가 어려울 수 있습니다.

이러한 혼동을 피하려면 새 패키지의 이름 및 GUID를 업데이트해야 합니다. Business Intelligence Development Studio의 ID 속성에서 GUID를 다시 생성하고 속성 창에서 Name 속성 값을 업데이트할 수 있습니다. 또한 GUID 및 이름을 프로그래밍 방식으로 변경하거나 dtutil 명령 프롬프트를 사용하여 변경할 수 있습니다. 자세한 내용은 패키지 속성 설정dtutil 유틸리티(SSIS 도구)를 참조하십시오.

부모 로깅 옵션

태스크, For Loop, Foreach Loop 및 시퀀스 컨테이너의 로깅 옵션은 해당하는 패키지 또는 부모 컨테이너와 일치하는 경우가 많습니다. 이러한 경우 부모 컨테이너에서 로깅 옵션을 상속받도록 구성할 수 있습니다. 예를 들어 For Loop 컨테이너에 포함된 SQL 실행 태스크는 For Loop 컨테이너에 설정된 로깅 옵션을 사용할 수 있습니다. 부모 로깅 옵션을 사용하려면 컨테이너의 LoggingMode 속성을 UseParentSetting으로 설정합니다. Business Intelligence Development Studio의 속성 창 또는 SSIS 디자이너의 SSIS 로그 구성 대화 상자를 통해 이 속성을 설정할 수 있습니다.

로깅 템플릿

SSIS 로그 구성 대화 상자에서 자주 사용하는 로깅 구성을 템플릿으로 만들어 저장한 다음 여러 패키지에서 사용할 수 있습니다. 이렇게 하면 여러 패키지에 대해 일관된 로깅 정책을 적용할 수 있으며 템플릿을 업데이트한 다음 적용하여 여러 패키지에 대한 로그 설정을 쉽게 수정할 수 있습니다. 템플릿은 XML 파일로 저장됩니다.

SSIS 로그 구성 대화 상자를 사용하여 로깅을 구성하려면

  1. 패키지 및 패키지에 속한 태스크에 대해 로깅을 사용하도록 설정합니다. 로깅은 패키지, 컨테이너 및 태스크 수준에서 발생할 수 있습니다. 패키지, 컨테이너 및 태스크에 대해 서로 다른 로그를 지정할 수 있습니다.

  2. 로그 공급자를 선택하고 패키지에 대한 로그를 추가합니다. 로그는 패키지 수준에서만 만들 수 있으며 태스크나 컨테이너는 패키지에 대해 만들어진 로그 중 하나를 사용해야 합니다. 각 로그는 텍스트 파일, SQL Server 프로파일러, SQL Server, Windows 이벤트 로그, XML 파일 중 하나의 로그 공급자와 연결됩니다. 자세한 내용은 방법: 패키지에서 로깅 활성화를 참조하십시오.

  3. 로그에서 캡처할 각 이벤트 및 해당 이벤트에 대한 로그 스키마 정보를 선택합니다. 자세한 내용은 방법: 저장된 구성 파일을 사용하여 로깅 구성을 참조하십시오.

패키지를 개발하는 동안 로그 항목을 보려면

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

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

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