데이터 오류 처리Error Handling in Data

데이터 흐름 구성 요소가 열 데이터에 변환을 적용하거나, 원본에서 데이터를 추출하거나, 데이터를 대상으로 로드할 때 오류가 발생할 수 있습니다.When a data flow component applies a transformation to column data, extracts data from sources, or loads data into destinations, errors can occur. 오류는 주로 예기치 않은 데이터 값으로 인해 발생합니다.Errors frequently occur because of unexpected data values. 예를 들어 열에 숫자 대신 문자열이 포함되었기 때문에 데이터 변환이 실패하거나, 열의 데이터 형식은 숫자인데 데이터가 날짜여서 데이터베이스 열에 대한 삽입 작업이 실패하거나, 열 값이 0이어서 식 계산이 실패하고 잘못된 수치 연산이 발생할 수 있습니다.For example, a data conversion fails because a column contains a string instead of a number, an insertion into a database column fails because the data is a date and the column has a numeric data type, or an expression fails to evaluate because a column value is zero, resulting in a mathematical operation that is not valid.

오류는 일반적으로 다음과 같은 범주에 속합니다.Errors typically fall into one the following categories:

  • 변환으로 인해 유효 숫자나 비유효 숫자가 손실되거나 문자열이 잘리는 경우 발생하는 데이터 변환 오류.Data conversion errors, which occur if a conversion results in loss of significant digits, the loss of insignificant digits, and the truncation of strings. 데이터 변환 오류는 요청한 변환이 지원되지 않는 경우에도 발생합니다.Data conversion errors also occur if the requested conversion is not supported.

  • 런타임 시 계산되는 식이 잘못된 연산을 수행하거나 데이터 값이 누락 또는 잘못되어 구문이 잘못된 경우에 발생하는 식 계산 오류Expression evaluation errors, which occur if expressions that are evaluated at run time perform invalid operations or become syntactically incorrect because of missing or incorrect data values.

  • 조회 작업이 조회 테이블에서 일치하는 항목을 찾지 못하는 경우에 발생하는 조회 오류Lookup errors, which occur if a lookup operation fails to locate a match in the lookup table.

    Integration Services 오류, 경고 및 기타 메시지 목록은 Integration Services Error and Message Reference를 참조하십시오.For a list of Integration Services errors, warnings, and other messages, see Integration Services Error and Message Reference.

오류 출력을 사용하여 행 수준 오류 캡처Use error outputs to capture row-level errors

여러 데이터 흐름 구성 요소에서 지원되는 오류 출력을 통해 들어오고 나가는 데이터의 행 수준 오류를 구성 요소에서 처리하는 방법을 제어할 수 있습니다.Many data flow components support error outputs, which let you control how the component handles row-level errors in both incoming and outgoing data. 입력 또는 출력의 개별 열에 대해 옵션을 설정하여 잘림이나 오류가 발생할 경우 구성 요소에서 작동하는 방법을 지정합니다.You specify how the component behaves when truncation or an error occurs by setting options on individual columns in the input or output. 예를 들어 고객 이름 데이터가 잘린 경우 구성 요소가 실패하지만 덜 중요한 데이터가 포함된 다른 열의 오류는 무시하도록 지정할 수 있습니다.For example, you can specify that the component should fail if customer name data is truncated, but ignore errors on another column that contains less important data.

오류 출력은 다른 변환의 입력에 연결되거나 오류가 없는 출력과는 다른 대상으로 로드될 수 있습니다.The error output can be connected to the input of another transformation or loaded into a different destination than the non-error output. 예를 들어 오류 출력은 빈 열에 대해 문자열을 제공하는 파생 열 변환에 연결될 수 있습니다.For example, the error output can be a connected to a Derived Column transformation that provides a string for a column that is blank.

다음 다이어그램에서는 오류 출력이 포함된 간단한 데이터 흐름을 보여 줍니다.The following diagram shows a simple data flow including an error output.

오류 출력을 사용 하 여 데이터 흐름Data flow with error output

자세한 내용은 데이터 흐름Integration Services 경로를 참조하세요.For more information, see Data Flow and Integration Services Paths.

구성 오류 출력 대화 상자Configure Error Output dialog box

오류 출력 구성 대화 상자를 사용하여 오류 출력을 지원하는 데이터 흐름 변환에 대한 오류 처리 옵션을 구성할 수 있습니다.Use the Configure Error Output dialog box to configure error handling options for data flow transformations that support an error output.

오류 출력 작업 방법에 대한 자세한 내용은 데이터 오류 처리를 참조하세요.To learn more about working with error outputs, see Error Handling in Data.

옵션Options

입력 또는 출력Input or Output
출력의 이름을 확인합니다.View the name of the output.

Column
변환 편집기 대화 상자에서 선택한 출력 열을 봅니다.View the output columns that you selected in the transformation editor dialog box.

오류Error
해당 사항이 있을 경우 오류 발생 시 수행할 동작을 지정합니다. 오류 무시, 행 리디렉션 또는 구성 요소 실패를 지정할 수 있습니다.If applicable, specify what should happen when an error occurs: ignore the failure, redirect the row, or fail the component.

관련 항목: 데이터 오류 처리Related Topics: Error Handling in Data

잘림Truncation
해당 사항이 있을 경우 잘림 발생 시 수행할 동작을 지정합니다. 오류 무시, 행 리디렉션 또는 구성 요소 실패를 지정할 수 있습니다.If applicable, specify what should happen when a truncation occurs: ignore the failure, redirect the row, or fail the component.

관련 항목: 데이터 오류 처리Related Topics: Error Handling in Data

DescriptionDescription
작업에 대한 설명을 표시합니다.View the description of the operation.

이 값을 선택한 셀에 설정Set this value to selected cells
오류나 잘림 발생 시 선택한 모든 셀에 수행할 동작을 지정합니다. 오류 무시, 행 리디렉션 또는 구성 요소 실패를 지정할 수 있습니다.Specify what should happen to all the selected cells when an error or truncation occurs: ignore the failure, redirect the row, or fail the component.

적용Apply
선택한 셀에 오류 처리 옵션을 적용합니다.Apply the error handling option to the selected cells.

오류: 실패 또는 잘림Errors are either failures or truncations

오류는 오류 또는 잘림의 두 범주로 분류됩니다.Errors fall into one of two categories: errors or truncations.

오류.Errors. 오류는 명확한 실패를 나타내며 NULL 결과를 생성합니다.An error indicates an unequivocal failure, and generates a NULL result. 이러한 오류에는 데이터 변환 오류 또는 식 계산 오류가 포함될 수 있습니다.Such errors can include data conversion errors or expression evaluation errors. 예를 들어 영문자가 포함된 문자열을 숫자로 변환하려고 시도하면 오류가 발생합니다.For example, an attempt to convert a string that contains alphabetical characters to a number causes an error. 캐스트가 잘못되거나 호환되지 않는 데이터 형식을 사용하는 경우 데이터 변환, 식 평가, 변수와 속성 및 데이터 열에 식 결과를 할당하는 작업이 실패할 수 있습니다.Data conversions, expression evaluations, and assignments of expression results to variables, properties, and data columns may fail because of illegal casts and incompatible data types. 자세한 내용은 캐스트(SSIS 식), 식에서의 Integration Services 데이터 형식Integration Services 데이터 형식을 참조하세요.For more information see, Cast (SSIS Expression), Integration Services Data Types in Expressions, and Integration Services Data Types.

잘림.Truncations. 잘림은 오류보다 덜 심각합니다.A truncation is less serious than an error. 잘림은 사용 가능하거나 심지어 필요한 결과를 생성하기도 합니다.A truncation generates results that might be usable or even desirable. 잘림은 필요에 따라 오류 또는 허용 가능한 조건으로 취급될 수 있습니다.You can elect to treat truncations as errors or as acceptable conditions. 예를 들어 한 자만 수용할 수 있는 열에 15자의 문자열을 삽입하는 경우 해당 문자열을 잘라내도록 할 수 있습니다.For example, if you are inserting a 15-character string into a column that is only one character wide, you can elect to truncate the string.

오류 처리 옵션 선택Select an error handling option

원본, 변환 및 대상에서 오류 및 잘림이 처리되는 방법을 구성할 수 있습니다.You can configure how sources, transformations, and destinations handle errors and truncations. 다음 표에서는 옵션에 대해 설명합니다.The following table describes the options.

옵션Option DescriptionDescription
구성 요소 실패Fail Component 오류 또는 잘림이 발생하면 데이터 흐름 태스크가 실패합니다.The Data Flow task fails when an error or a truncation occurs. 실패는 오류 또는 잘림에 대한 기본 옵션입니다.Failure is the default option for an error and a truncation.
오류 무시Ignore Failure 오류 또는 잘림이 무시되고 데이터 행이 변환 또는 원본의 출력으로 전달됩니다.The error or the truncation is ignored and the data row is directed to the output of the transformation or source.
행 리디렉션Redirect Row 오류 또는 잘림이 발생한 데이터 행이 원본, 변환 또는 대상의 오류 출력으로 전달됩니다.The error or the truncation data row is directed to the error output of the source, transformation, or destination.

오류에 대한 추가 정보 확인Get more info about the error

데이터 열 외에도 오류 출력에는 ErrorCodeErrorColumn 열이 포함됩니다.In addition to the data columns, the error output includes the ErrorCode and ErrorColumn columns. ErrorCode 열은 오류를 식별하며 ErrorColumn 에는 오류 열의 계보 식별자가 포함됩니다.The ErrorCode column identifies the error and the ErrorColumn contains the lineage identifier of the error column.

ErrorColumn 열의 값이 0으로 설정되는 경우도 있습니다.Under some circumstances, the value of the ErrorColumn column is set to zero. 이는 오류 조건이 단일 열 대신 전체 행에 영향을 주는 경우 발생합니다.This occurs when the error condition affects the entire row instead of a single column. 조회 변환에서 조회가 실패하는 경우를 예로 들 수 있습니다.An example is when a lookup fails in the Lookup transformation.

이 두 숫자 값은 해당 오류 설명과 열 이름이 없으므로 사용이 제한될 수 있습니다.These two numeric values may be of limited use without the corresponding error description and column name. 아래에는 오류 설명과 열 이름을 확인할 수 있는 몇 가지 방법이 나와 있습니다.Here are some ways to get the error description and column name.

  • 오류 출력에 데이터 뷰어를 연결하면 오류 설명과 열 이름을 모두 확인할 수 있습니다.You can see both error descriptions and column names by attaching a Data Viewer to the error output. 이렇게 하려면 SSIS 디자이너에서 오류 출력 앞의 빨간색 화살표를 마우스 오른쪽 단추로 클릭하고 데이터 뷰어 사용을 선택합니다.In SSIS Designer, right-click on the red arrow leading to an error output and select Enable Data Viewer.

  • 로깅을 사용하도록 설정하고 DiagnosticEx 이벤트를 선택하여 열 이름을 찾을 수 있습니다.You can find column names by enabling logging and selecting the DiagnosticEx event. 이 이벤트는 로그에 데이터 흐름 열 맵을 작성합니다.This event writes a data flow column map to the log. 그런 다음 이 열 맵의 식별자를 통해 열 이름을 조회할 수 있습니다.You can then look up the column name from its identifier in this column map. DiagnosticEx 이벤트는 로그의 크기를 줄이기 위해 해당 XML 출력에서 공백을 유지하지 않습니다.Note that the DiagnosticEx event does not preserve whitespace in its XML output to reduce the size of the log. 가독성을 높이기 위해 XML 서식 지정 및 구문 강조를 지원하는 XML 편집기(예: Visual Studio)로 로그를 복사합니다.To improve readability, copy the log into an XML editor - in Visual Studio, for example - that supports XML formatting and syntax highlighting. 로깅에 대한 자세한 내용은 Integration Services(SSIS) 로깅을 참조하세요.For more info about logging, see Integration Services (SSIS) Logging.

    데이터 흐름 열 맵의 예는 다음과 같습니다.Here is an example of a data flow column map.

    
    \<DTS:PipelineColumnMap xmlns:DTS="www.microsoft.com/SqlServer/Dts">  
        \<DTS:Pipeline DTS:Path="\Package\Data Flow Task">  
            \<DTS:Column DTS:ID="11" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Output].Columns[Customer]"/>  
            \<DTS:Column DTS:ID="12" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Output].Columns[Product]"/>  
            \<DTS:Column DTS:ID="13" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Output].Columns[Price]"/>  
            \<DTS:Column DTS:ID="14" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Output].Columns[Timestamp]"/>  
            \<DTS:Column DTS:ID="20" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Error Output].Columns[Customer]"/>  
            \<DTS:Column DTS:ID="21" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Error Output].Columns[Product]"/>  
            \<DTS:Column DTS:ID="22" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Error Output].Columns[Price]"/>  
            \<DTS:Column DTS:ID="23" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Error Output].Columns[Timestamp]"/>  
            \<DTS:Column DTS:ID="24" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Error Output].Columns[ErrorCode]"/>  
            \<DTS:Column DTS:ID="25" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Error Output].Columns[ErrorColumn]"/>  
            \<DTS:Column DTS:ID="31" DTS:IdentificationString="Flat File Destination.Inputs[Flat File Destination Input].Columns[Customer]"/>  
            \<DTS:Column DTS:ID="32" DTS:IdentificationString="Flat File Destination.Inputs[Flat File Destination Input].Columns[Product]"/>  
            \<DTS:Column DTS:ID="33" DTS:IdentificationString="Flat File Destination.Inputs[Flat File Destination Input].Columns[Price]"/>  
            \<DTS:Column DTS:ID="34" DTS:IdentificationString="Flat File Destination.Inputs[Flat File Destination Input].Columns[Timestamp]"/>  
        \</DTS:Pipeline>  
    \</DTS:PipelineColumnMap>  
    
  • Script 구성 요소를 사용하여 오류 출력의 추가 열에 오류 설명 및 열 이름을 포함할 수도 있습니다.You can also use the Script component to include the error description and the column name in additional columns of the error output. 예제는 스크립트 구성 요소를 사용하여 오류 출력 향상을 참조하세요.For an example, see Enhancing an Error Output with the Script Component.

    • 호출 하는 단일 스크립트 줄을 사용 하 여 오류 설명을 추가 열에 포함 된 GetErrorDescription 의 메서드는 IDTSComponentMetaData100 인터페이스.Include the error description in an additional column by using a single line of script to call the GetErrorDescription method of the IDTSComponentMetaData100 interface.

    • 호출 하는 단일 스크립트 줄을 사용 하 여 추가 열에 열 이름을 포함 된 GetIdentificationStringByID 의 메서드는 IDTSComponentMetaData100 인터페이스입니다.Include the column name in an additional column by using a single line of script to call the GetIdentificationStringByID method of the IDTSComponentMetaData100 interface.

      오류를 캡처할 데이터 흐름 구성 요소에서 임의의 다운스트림 위치에 있는 데이터 흐름의 오류 세그먼트에 Script 구성 요소를 추가할 수 있습니다.You can add the Script component to the error segment of the data flow anywhere downstream from the data flow components whose errors you want to capture. 일반적으로는 오류 행이 대상에 기록되기 직전에 Script 구성 요소를 배치합니다.Typically you place the Script component immediately before the error rows are written to a destination. 이렇게 하면 스크립트가 설명에서 기록된 오류 행만 조회합니다.This way, the script looks up descriptions only for error rows that are written. 데이터 흐름의 오류 세그먼트가 일부 오류를 수정하고 해당 행을 오류 대상에 기록하지 않을 수도 있습니다.The error segment of the data flow may correct some errors and not write those rows to an error destination.

관련 항목:See Also

데이터 흐름 Data Flow
변환 사용 하 여 데이터를 변환 합니다. Transform Data with Transformations
경로에 구성 요소 연결 Connect Components with Paths
데이터 흐름 태스크 Data Flow Task
데이터 흐름Data Flow