Integration Services에는 패키지가 완료 및 배포된 후 실행할 때 패키지 문제를 해결하는 데 사용할 수 있는 기능과 도구가 포함되어 있습니다.
디자인 타임에 SSDT(SQL Server Data Tools)는 패키지 실행, 진행률 창 및 데이터 뷰어를 일시 중지하여 데이터 흐름을 통과하는 데이터를 감시하는 중단점을 제공합니다. 그러나 배포된 패키지를 실행하는 경우에는 이러한 기능을 사용할 수 없습니다. 배포된 패키지 문제를 해결하는 주요 기술은 다음과 같습니다.
이벤트 처리기를 사용하여 패키지 오류를 catch하고 처리합니다.
오류 출력을 사용하여 잘못된 데이터를 캡처합니다.
로깅을 사용하여 패키지 실행 단계를 추적합니다.
다음 팁과 기술을 사용하여 패키지 실행 문제를 방지할 수도 있습니다.
트랜잭션을 사용하여 데이터 무결성을 보장하는 데 도움이 됩니다. 자세한 내용은 Integration Services 트랜잭션을 참조하세요.
검사점을 사용하여 실패 지점에서 패키지를 다시 시작합니다. 자세한 내용은 검사점을 사용하여 패키지 다시 시작을 참조하세요.
이벤트 처리기를 사용하여 패키지 오류를 잡고 처리합니다.
이벤트 처리기를 사용하여 패키지 및 패키지의 개체에서 발생하는 많은 이벤트에 응답할 수 있습니다.
- OnError 이벤트에 대한 이벤트 처리기를 만듭니다. 이벤트 처리기에서 메일 보내기 작업을 사용하여 관리자에게 오류를 알리거나, 스크립트 태스크 및 사용자 지정 논리를 사용하여 문제 해결을 위한 시스템 정보를 가져오거나, 임시 리소스 또는 불완전한 출력을 정리할 수 있습니다. 자세한 내용은 Integration Services(SSIS) 이벤트 처리기를 참조하세요.
오류 출력을 사용하여 잘못된 데이터 문제 해결
많은 데이터 흐름 구성 요소에서 사용할 수 있는 오류 출력을 사용하여 오류가 포함된 행을 나중에 분석할 별도의 대상으로 보낼 수 있습니다.
오류 출력을 사용하여 잘못된 데이터를 캡처합니다. 오류가 포함된 행을 오류 테이블 또는 텍스트 파일과 같은 별도의 대상으로 보냅니다. 오류 출력은 행이 거부된 오류의 수와 오류가 발생한 열의 ID를 포함하는 두 개의 숫자 열을 자동으로 추가합니다. 자세한 내용은 데이터 내 오류 처리를 참조하세요.
오류 출력에 친숙한 정보를 추가합니다. 오류 출력에서 제공하는 두 개의 숫자 식별자 외에도 설명 정보를 추가하여 오류 출력을 보다 쉽게 분석할 수 있습니다.
오류에 대한 설명을 추가합니다. 스크립트 구성 요소를 사용하여 오류 설명을 쉽게 조회할 수 있습니다. 자세한 내용은 스크립트 구성 요소에 대한 오류 출력 향상을 참조하세요.
오류 열의 이름을 추가합니다. 오류 출력에 의해 저장된 열 ID에 해당하는 열 이름을 조회하는 작업은 스크립트 구성 요소에서 쉽게 수행할 수 없으며 추가 단계가 필요합니다. 데이터 흐름의 각 열 ID는 해당 데이터 흐름 태스크 내에서 고유하며 디자인 타임에 패키지에 유지됩니다. 다음 방법은 오류 출력에 열 이름을 추가하기 위한 한 가지 제안입니다.
열 이름의 조회 테이블을 만듭니다. Integration Services API를 사용하여 저장된 각 패키지, 패키지의 각 데이터 흐름, 데이터 흐름의 각 개체, 데이터 흐름 개체의 각 입력 및 출력을 반복하는 별도의 애플리케이션을 만듭니다. 애플리케이션은 부모 데이터 흐름 태스크의 ID 및 패키지 ID와 함께 각 열의 열 ID와 이름을 조회 테이블에 유지해야 합니다.
출력에 열 이름을 추가합니다. 이전 단계에서 만든 조회 테이블의 열 이름을 조회하는 오류 출력에 조회 변환을 추가합니다. 조회는 오류 출력의 열 ID, 패키지 ID(시스템 변수 System::P ackageID에서 사용 가능) 및 데이터 흐름 태스크의 ID(시스템 변수 System::TaskID에서 사용 가능)를 사용할 수 있습니다.
작업 보고서를 사용하여 패키지 실행 문제 해결
표준 작업 보고서는 SQL Server Management Studio에서 Integration Services 카탈로그에 배포된 Integration Services 패키지를 모니터링하는 데 도움이 됩니다. 이러한 패키지 보고서는 패키지 상태 및 기록을 보고 필요한 경우 오류의 원인을 식별하는 데 도움이 됩니다.
자세한 내용은 패키지 실행에 대한 문제 해결 보고서를 참조하세요.
SSISDB 뷰를 사용하여 패키지 실행 문제 해결
패키지 실행 및 기타 작업 정보를 모니터링하기 위해 쿼리할 수 있는 여러 SSISDB 데이터베이스 뷰를 사용할 수 있습니다. 자세한 내용은 패키지 실행 및 기타 작업에 대한 모니터링을 참조하세요.
로깅을 사용하여 패키지 실행 문제 해결
로깅을 사용하도록 설정하여 실행 중인 패키지에서 발생하는 대부분의 작업을 추적할 수 있습니다. 로그 공급자는 나중에 분석하기 위해 지정된 이벤트에 대한 정보를 캡처하고 해당 정보를 데이터베이스 테이블, 플랫 파일, XML 파일 또는 지원되는 다른 출력 형식에 저장합니다.
로깅을 사용하도록 설정합니다. 이벤트만 선택하고 캡처하려는 정보 항목만 선택하여 로깅 출력을 구체화할 수 있습니다. 자세한 내용은 SSIS(Integration Services) 로깅 및 Integration Services(SSIS) 로깅을 참조하세요.
공급자 문제를 해결하려면 패키지의 진단 이벤트를 선택합니다. 패키지와 외부 데이터 원본의 상호 작용 문제를 해결하는 데 도움이 되는 로깅 메시지가 있습니다. 자세한 내용은 문제 해결 도구 패키지 연결을 참조하세요.
기본 로깅 출력을 향상시킵니다. 로깅은 일반적으로 패키지를 실행할 때마다 로깅 대상에 행을 추가합니다. 로깅 출력의 각 행은 해당 이름과 고유 식별자를 사용하여 패키지를 식별하고 고유한 ExecutionID로 패키지 실행을 식별하지만 단일 목록의 대량 로깅 출력은 분석하기 어려울 수 있습니다.
다음 방법은 기본 로깅 출력을 향상시키고 보고서를 더 쉽게 생성할 수 있도록 하는 한 가지 제안 사항입니다.
패키지의 각 실행을 기록하는 부모 테이블을 만듭니다. 이 부모 테이블에는 패키지 실행마다 하나의 행만 있으며, ExecutionID를 사용하여 Integration Services 로깅 테이블의 자식 레코드에 연결합니다. 각 패키지의 시작 부분에서 SQL 실행 태스크를 사용하여 이 새 행을 만들고 시작 시간을 기록할 수 있습니다. 그런 다음 패키지의 끝에 있는 다른 SQL 실행 태스크를 사용하여 끝 시간, 기간 및 상태로 행을 업데이트할 수 있습니다.
데이터 흐름에 감사 정보를 추가합니다. 감사 변환을 사용하여 각 행을 만들거나 수정한 패키지 실행에 대한 정보를 데이터 흐름의 행에 추가할 수 있습니다. 감사 변환을 통해 PackageName 및 ExecutionInstanceGUID를 포함하여 9개의 정보를 사용할 수 있습니다. 자세한 내용은 감사 변환을 참조하세요. 감사를 위해 각 행에 포함하려는 사용자 지정 정보가 있는 경우 파생 열 변환을 사용하여 데이터 흐름의 행에 이 정보를 추가할 수 있습니다. 자세한 내용은 파생 열 변환을 참조하세요.
행 개수 데이터를 캡처하는 것이 좋습니다. 각 패키지 실행 인스턴스가 ExecutionID로 식별되는 행 개수 정보에 대한 별도의 테이블을 만드는 것이 좋습니다. 행 개수 변환을 사용하여 데이터 흐름의 중요한 지점에서 일련의 변수에 행 수를 저장합니다. 데이터 흐름이 종료된 후 SQL 실행 태스크를 사용하여 이후 분석 및 보고를 위해 테이블의 행에 일련의 값을 삽입합니다.
이 방법에 대한 자세한 내용은 Microsoft 백서 Project REAL: Business Intelligence ETL 디자인 사례의 "ETL 감사 및 로깅" 섹션을 참조하세요.
디버그 덤프 파일을 사용하여 패키지 실행 문제 해결
Integration Services에서 패키지 실행에 대한 정보를 제공하는 디버그 덤프 파일을 만들 수 있습니다. 디버그 덤프 파일에 대한 자세한 내용은 Generating Dump Files for Package Execution을 참조하십시오.
런타임 유효성 검사 문제 해결
경우에 따라 데이터 원본에 연결할 수 없거나 패키지의 이전 작업이 실행될 때까지 패키지의 일부를 확인할 수 없습니다. Integration Services에는 이러한 조건에서 발생하는 유효성 검사 오류를 방지하는 데 도움이 되는 다음 기능이 포함되어 있습니다.
패키지가 로드될 때 유효하지 않은 패키지 요소에서 DelayValidation 속성을 구성합니다. 패키지가 로드될 때 유효성 검사 오류를 방지하기 위해, 구성이 유효하지 않은 패키지 요소에서
DelayValidation를True로 설정할 수 있습니다. 예를 들어 SQL 실행 태스크가 런타임에 테이블을 만들 때까지 존재하지 않는 대상 테이블을 사용하는 데이터 흐름 태스크가 있을 수 있습니다. 패키지DelayValidation수준 또는 패키지에 포함된 개별 작업 및 컨테이너 수준에서 속성을 사용하도록 설정할 수 있습니다.이 속성은
DelayValidation데이터 흐름 태스크에서 설정할 수 있지만 개별 데이터 흐름 구성 요소는 설정할 수 없습니다. 개별 데이터 흐름 구성 요소의 속성을 .로 설정 ValidateExternalMetadata 하여 비슷한 효과를 얻을 수 있습니다false. 그러나 이 속성의 값이 있으면false구성 요소는 외부 데이터 원본의 메타데이터 변경 내용을 인식하지 않습니다.true로 설정하면, 특히 패키지가 트랜잭션을 사용하는 경우, 이 ValidateExternalMetadata 속성은 데이터베이스 잠금으로 인한 차단 문제를 방지하는 데 도움이 될 수 있습니다.
런타임 권한 문제 해결
SQL Server 에이전트를 사용하여 배포된 패키지를 실행하려고 할 때 오류가 발생하면 에이전트에서 사용하는 계정에 필요한 권한이 없을 수 있습니다. SQL Server 에이전트 작업에서 실행되는 패키지 문제를 해결하는 방법에 대한 자세한 내용은 SQL Server 에이전트 작업 단계에서 SSIS 패키지를 호출할 때 SSIS 패키지가 실행되지 않음을 참조하세요. SQL Server 에이전트 작업에서 패키지를 실행하는 방법에 대한 자세한 내용은 패키지 에 대한 SQL Server 에이전트 작업을 참조하세요.
Excel 또는 Access 데이터 원본에 연결하려면 SQL Server 에이전트에 TEMP 및 TMP 환경 변수로 지정된 폴더의 임시 파일을 읽고, 쓰고, 만들고, 삭제할 수 있는 권한이 있는 계정이 필요합니다.
64비트 문제 해결
- 일부 데이터 공급자는 64비트 플랫폼에서 사용할 수 없습니다. 특히 Excel 또는 Access 데이터 원본에 연결하는 데 필요한 Microsoft Jet OLE DB 공급자는 64비트 버전에서 사용할 수 없습니다.
설명 없이 오류 문제 해결
함께 제공되는 설명이 없는 Integration Services 오류가 발생하면 오류 번호를 조회하여 Integration Services 오류 및 메시지 참조 에서 설명을 찾을 수 있습니다. 이 목록에는 현재 문제 해결 정보가 포함되어 있지 않습니다.