데이터 수집기 로깅

데이터 수집기는 각 컬렉션 집합 및 해당 컬렉션 패키지에 대한 다양한 종류의 정보를 캡처하고 기록합니다. msdb 테이블에 기록되는 이 정보는 현재 컬렉션 집합 상태 및 패키지 실행 결과에 대한 정보를 제공합니다. 이러한 로그 테이블은 각 컬렉션 집합 및 해당 패키지에 대한 통계 정보도 제공합니다. 데이터 컬렉션 모니터링 및 분석에 사용할 수 있는 정보 종류는 다음과 같습니다.

  • 현재 실행 중인 컬렉션 집합

  • 실행된 컬렉션 집합 기록

  • 지정한 컬렉션 집합에 대해 해당 컬렉션의 일부로 실행된 패키지의 계층

  • 각 패키지의 시작 및 중지 시간, 기간, 완료 상태, 처리된 행 수

  • 컬렉션 집합 실행이 실패한 경우 실패를 유발한 패키지

  • 패키지 실행이 실패한 경우 해당 패키지에서 오류 메시지를 반환하며 실패한 구성 요소

  • 각 패키지에 대해 해당 패키지에서 각 실행에 대해 기록한 로그 이벤트 시퀀스

데이터 수집기 로깅의 SSIS 역할

데이터 수집기는 저장 프로시저와 SQL Server 2008 Integration Services(SSIS) 태스크 실행 및 로깅 기능을 사용하여 로깅을 구현합니다. 이러한 기능은 런타임 이벤트 발생 시 로그 공급자를 위해 요약 및 자세한 로그 항목을 만듭니다. 자세한 내용은 패키지에서 로깅 구현을 참조하십시오.

기록된 이벤트는 프로그램 실행의 모든 단계에 대한 참조점을 제공합니다. 각 이벤트 레코드는 태스크가 실행된 패키지의 실행 ID로 매핑됩니다. 데이터 수집기는 데이터 컬렉션 및 업로드를 위해 이러한 ID를 특정 패키지로 매핑합니다.

컬렉션 집합 및 패키지 로깅

데이터 수집기 로깅을 위한 상위 수준 아키텍처 및 데이터 처리는 다음과 같습니다.

  • 런타임에 데이터 수집기가 제공하는 컬렉션 집합 정보는 저장 프로시저를 사용하여 데이터 수집기 테이블에 저장됩니다. 각 레코드에는 테이블 항목을 참조하고 패키지를 SSIS 실행 ID로 매핑하는 데 사용되는 log_id가 지정됩니다.

  • 패키지 정보는 각 패키지 실행의 시작과 끝에 기록됩니다. 이러한 기록은 각 패키지의 제어 흐름 시작과 끝에 Transact-SQL 태스크를 실행하여 수행됩니다.

    • 패키지가 실행되는 동안 데이터 수집기는 정기적인 업데이트 및 통계 업데이트를 수행합니다. 각 패키지에는 오류 이벤트를 기록하는 전역 오류 처리기 태스크(SSIS 패키지 이벤트를 사용하여 구현)가 있습니다. 이는 SSIS "SQL 실행 태스크"를 제어 흐름에 배치하여 필요한 이벤트 로깅을 제공하는 방법으로 수행됩니다. 자세한 내용은 SSIS SQL 실행 태스크제어 흐름 요소를 참조하십시오.

    • SSIS가 생성하는 이벤트는 dbo.sp_dts_addlogentry 저장 프로시저를 사용하여 SSIS 정의 테이블 dbo.sysssislog에 기록됩니다.

  • 패키지가 끝나면 성공 또는 실패 이벤트가 기록됩니다.

  • 컬렉션 집합이 중지되면 이 정보가 기록됩니다. 패키지와 마찬가지로 성공 또는 실패 이벤트가 기록됩니다.

데이터 수집기가 생성하는 데이터는 dbo.syscollector_execution_log_internal 테이블에 저장되며 이 테이블은 dbo.sysssislog에 조인됩니다. 컬렉션 집합 실행에 대한 전체 뷰를 제공합니다. 이러한 테이블은 다음 섹션에서 자세하게 설명합니다.

로그 테이블

다음 표에서는 로그 테이블 및 해당 열을 나열합니다. 이 항목의 뒷부분에 나오는 "로그 데이터 액세스 및 보기" 섹션에서는 로그 테이블의 데이터 형식 및 콘텐츠에 대한 세부 정보를 볼 때 사용할 수 있는 함수 및 뷰에 대해 설명합니다.

테이블 이름

설명

syscollector_execution_log_internal

실행 정보를 저장하기 위한 데이터 수집기 테이블입니다. 이 테이블에는 다음 열이 있습니다.

  • log_id

  • parent_log_id

  • collection_set_id

  • collection_item_id

  • start_time

  • last_iteration_time

  • finish_time

  • runtime_execution_mode

  • status

  • operator

  • package_id

  • package_execution_id

  • failure_message

syscollector_execution_stats_internal

통계 정보를 저장하기 위한 데이터 수집기 테이블입니다. 여기에는 다음 열이 있습니다.

  • log_id

  • task_name

  • execution_row_count_in

  • execution_row_count_out

  • execution_row_count_errors

  • execution_time_ms

  • log_time

sysssislog

컬렉션 집합 또는 패키지의 시작 및 경고/오류와 같은 이벤트 정보를 위한 SSIS 정의 테이블입니다. 자세한 내용은 sysssislog(Transact-SQL)를 참조하십시오.

중요 정보중요

로그 테이블의 데이터를 수정하지 마십시오. 이 테이블의 데이터는 저장 프로시저를 사용하여 특정한 방법으로 삽입, 업데이트 및 삭제해야 합니다. 테이블 이름과 정의는 런타임에 변경될 수 있고 응용 프로그램을 업데이트할 때 변경되며 후속 릴리스에서 변경될 수 있습니다. 테이블을 직접 사용하지 않고 데이터 수집기에서 제공하는 문서화된 저장 프로시저와 뷰를 사용하여 인스턴스 및 응용 프로그램 데이터에 액세스하십시오.

로그 보존

컬렉션 집합 로그는 관리 데이터 웨어하우스의 데이터가 컬렉션 집합에 대해 보관되는 것과 동일한 기간 동안 보관됩니다. 이는 각 컬렉션 집합에 대해 구성할 수 있는 보존 기간으로 정의합니다. 보존 기간이 만료되면 SQL Server 에이전트 작업이 로그에서 데이터를 제거합니다.

로깅 수준

발생 가능한 다양한 컬렉션 시나리오를 처리하기 위해 세 가지 로깅 수준이 제공됩니다. 이를 통해 컬렉션 집합이나 패키지의 문제를 해결해야 할 경우 필요한 데이터를 확보할 수 있습니다. 로깅 요구 사항에 따라 각 컬렉션 집합에 대해 서로 다른 로깅 수준을 설정할 수 있습니다.

다음 표에서는 사용 가능한 로깅 옵션에 대해 설명합니다.

Level

설명

0

기본 로깅 수준입니다. 실행 정보 및 다음 SSIS 이벤트를 기록합니다.

  • 컬렉션 집합 시작 또는 중지

  • 패키지 시작 또는 중지

  • 오류 정보

1

0 수준 로깅과 다음 이벤트를 결합합니다.

  • 실행 통계

  • 지속적으로 실행되는 컬렉션 프로세스

  • SSIS의 경고 이벤트

2

1수준 로깅과 자세한 SSIS 이벤트를 결합합니다.

기본 로깅 수준은 0입니다. 0 수준은 1 수준 로깅에서 생성되는 경고 이벤트와 같은 과도한 로그 메시지를 피하기 위해 사용됩니다. 이러한 경고 이벤트에는 사용자가 수정할 수 없는 SSIS의 성능 제안 등이 포함됩니다.

수준 2는 고급 문제 해결에 사용할 수 있는 추가 이벤트 정보를 제공합니다.

SSIS 이벤트

모든 데이터 수집기 패키지는 SQL Server 이벤트 공급자를 사용합니다. 다음 표에 설명되어 있는 것과 같은 이벤트가 기록되어 볼 수 있습니다.

이벤트 이름

로깅 수준

설명

PackageBegin

0

항상 생성되는 표준 이벤트입니다. 이 이벤트는 사용하지 않도록 설정할 수 없습니다.

PackageEnd

0

항상 생성되는 표준 이벤트입니다. 이 이벤트는 사용하지 않도록 설정할 수 없습니다.

OnError

0

오류 이벤트입니다.

OnWarning

1

경고 이벤트입니다.

PipelineBufferLeak

2

버퍼 관리자가 중지된 후 버퍼를 활성 상태로 유지한 모든 구성 요소에 대한 정보를 제공합니다. 버퍼가 여전히 활성 상태인 경우 버퍼 리소스가 해제되지 않으므로 메모리가 손실될 수 있습니다. 이 로그 항목은 구성 요소 이름과 버퍼 ID를 제공합니다.

PipelineExecutionPlan

2

데이터 흐름의 실행 계획을 보고합니다. 실행 계획은 버퍼를 구성 요소로 전송하는 방법에 대한 정보를 제공합니다. 이 정보는 PipelineExecutionTrees 로그 항목과 함께 데이터 흐름 태스크 내에서 발생하는 사항에 대해 설명합니다.

PipelineExecutionTrees

2

데이터 흐름에서 레이아웃 실행 트리를 보고합니다. 데이터 흐름 엔진 스케줄러에서는 이 트리를 사용하여 데이터 흐름의 실행 계획을 작성합니다.

PipelineInitialization

2

태스크에 대한 초기화 정보를 제공합니다. 이 정보에 BLOB(Binary Large Object) 데이터의 임시 저장소에 사용할 디렉터리, 기본 버퍼 크기 및 버퍼의 행 수가 포함됩니다. 데이터 흐름 태스크의 구성에 따라 여러 로그 항목이 기록될 수 있습니다.

ExecuteSQLExecutingQuery

2

SQL 문의 실행 단계에 대한 정보를 제공합니다. 로그 항목은 태스크에서 데이터베이스에 연결할 때, 태스크에서 SQL 문 준비를 시작할 때 및 SQL 문 실행이 완료된 후에 기록됩니다. 준비 단계에 대한 로그 항목은 태스크에서 사용하는 SQL 문을 포함합니다.

FileSystemOperation

2

태스크에서 수행하는 작업을 보고합니다. 이 로그 항목은 파일 시스템 작업이 시작될 때 기록되며 원본 및 대상에 대한 정보를 포함합니다.

ExecuteProcessExecutingProcess

2

태스크에서 실행하도록 구성한 프로세스에 대한 정보를 제공합니다.

두 개의 로그 항목이 기록됩니다. 한 항목에는 태스크에서 실행하는 실행 파일의 이름과 위치에 대한 정보가 들어 있고 다른 항목은 실행 파일의 종료를 기록합니다.

로그 데이터 액세스 및 보기

제공된 함수 및 뷰를 사용하여 프로그래밍 방식으로 데이터에 액세스하고 해당 데이터를 볼 수 있습니다. Management Studio의 개체 탐색기에 있는 로그 파일 뷰어를 사용하여 로그를 볼 수도 있습니다. 자세한 내용은 방법: 컬렉션 집합 로그 보기를 참조하십시오.

다음 표에서는 로그 데이터에 액세스하는 데 사용할 수 있는 함수 및 뷰에 대해 설명합니다.

이름

설명

fn_syscollector_get_execution_details(Transact-SQL)

요청한 log_id 및 모든 해당 종속 로그 항목에 대해 컬렉션 집합 및 패키지 로그에 대한 자세한 정보를 반환합니다.

fn_syscollector_get_execution_stats(Transact-SQL)

요청한 log_id에 대해 통계 집합을 반환합니다. 이 통계는 syscollector_execution_stats 뷰의 항목에서 계산됩니다.

syscollector_execution_log_full(Transact-SQL)

syscollector_execution_log_internal 테이블의 뷰를 제공합니다.

syscollector_execution_log_full(Transact-SQL)

syscollector_execution_log_internal 테이블의 자세한 뷰를 제공하고 상위 수준 컬렉션 로그 항목에서 시작하여 실행한 컬렉션 집합의 일부로 실행된 모든 패키지에 이르는 로그 항목을 계층으로 보여 줍니다.

syscollector_execution_stats(Transact-SQL)

syscollector_execution_stats_internal 테이블의 1:1 뷰를 제공합니다.