스크립트 구성 요소의 오류 출력 시뮬레이션Simulating an Error Output for the Script Component

오류 행의 자동 처리를 위해 스크립트 구성 요소의 출력을 오류 출력으로 직접 구성할 수는 없지만 적절할 때 추가 출력을 만들고 스크립트에 조건부 논리를 사용하여 행을 이 출력으로 전송하는 방식으로 기본 제공 오류 출력의 기능을 재현할 수 있습니다.Although you cannot directly configure an output as an error output in the Script component for automatic handling of error rows, you can reproduce the functionality of a built-in error output by creating an additional output and using conditional logic in your script to direct rows to this output when appropriate. 오류 번호와 오류가 발생한 열의 ID를 받는 두 개의 출력 열을 추가하여 기본 제공 오류 출력의 동작을 시뮬레이션할 수 있습니다.You may want to imitate the behavior of a built-in error output by adding two additional output columns to receive the error number and the ID of the column in which an error occurred.

미리 정의된 특정 Integration ServicesIntegration Services 오류 코드에 해당하는 오류 설명을 추가하려면 스크립트 구성 요소의 GetErrorDescription 속성을 통해 사용할 수 있는 IDTSComponentMetaData100 인터페이스의 ComponentMetaData 메서드를 사용합니다.If you want to add the error description that corresponds to a specific predefined Integration ServicesIntegration Services error code, you can use the GetErrorDescription method of the IDTSComponentMetaData100 interface, available through the Script component's ComponentMetaData property.

예제Example

이 예에서는 두 개의 동기 출력을 사용하는 변환으로 구성된 스크립트 구성 요소를 사용합니다.The example shown here uses a Script component configured as a transformation that has two synchronous outputs. 이 스크립트 구성 요소의 목적은 AdventureWorks 예제 데이터베이스의 주소 데이터에서 오류 행을 필터링하는 것입니다.The purpose of the Script component is to filter error rows from address data in the AdventureWorks sample database. 이 가상 예에서는 북아메리카 고객을 대상으로 홍보 행사를 준비 중이므로 필터를 사용하여 북아메리카에 위치하지 않은 주소를 제외해야 한다고 가정합니다.This fictitious example assumes that we are preparing a promotion for North American customers and need to filter out addresses that are not located in North America.

예를 구성하려면To configure the example

  1. 새 스크립트 구성 요소를 만들기 전에 연결 관리자를 만들고 AdventureWorks 예제 데이터베이스에서 주소 데이터를 선택하도록 데이터 흐름 원본을 구성합니다.Before creating the new Script component, create a connection manager and configure a data flow source that selects address data from the AdventureWorks sample database. CountryRegionName 열만 확인하는 이 예의 경우 단순히 Person.vStateCountryProvinceRegion 뷰를 사용해도 되고, Person.Address, Person.StateProvince 및 Person.CountryRegion 테이블을 조인하여 데이터를 선택해도 됩니다.For this example, which only looks at the CountryRegionName column, you can simply use the Person.vStateCountryProvinceRegion view, or you can select data by joining the Person.Address, Person.StateProvince, and Person.CountryRegion tables.

  2. 데이터 흐름 디자이너 화면에 새 스크립트 구성 요소를 추가하고 이 구성 요소를 변환으로 구성합니다.Add a new Script component to the Data Flow designer surface and configure it as a transformation. 열기는 스크립트 변환 편집기합니다.Open the Script Transformation Editor.

  3. 스크립트 페이지에서 설정는 u a g e 속성을 스크립트를 코딩 하는 데 사용할 스크립트 언어입니다.On the Script page, set the ScriptLanguage property to the script language that you want to use to code the script.

  4. 스크립트 편집 을 클릭하여 MicrosoftMicrosoft Visual StudioVisual Studio Tools for Applications)를 엽니다.Click Edit Script to open MicrosoftMicrosoft Visual StudioVisual Studio Tools for Applications (VSTA).

  5. Input0_ProcessInputRow 메서드를 입력 하거나 아래 표시 된 예제 코드를 붙여 넣습니다.In the Input0_ProcessInputRow method, type or paste the sample code shown below.

  6. VSTA를 닫습니다.Close VSTA.

  7. 입력 열 페이지에서 열을 스크립트 변환에서 처리 하려면 선택 합니다.On the Input Columns page, select the columns that you want to process in the Script transformation. 이 예에서는 CountryRegionName 열만 사용합니다.This example uses only the CountryRegionName column. 사용 가능한 입력 열 중 선택하지 않은 열은 데이터 흐름에서 변경되지 않은 상태로 전달됩니다.Available input columns that you leave unselected will simply be passed through unchanged in the data flow.

  8. 입 / 출력 페이지, 새 추가 하 고, 두 번째 출력 설정 해당 SynchronousInputID 값은 입력의 ID 값의는 SynchronousInputID 기본 출력의 속성입니다.On the Inputs and Outputs page, add a new, second output, and set its SynchronousInputID value to the ID of the input, which is also the value of the SynchronousInputID property of the default output. 설정의 ExclusionGroup 를 나타내는 각 행을 두 출력 중 하나로 그러면 동일한 0이 아닌 값 (예: 1) 출력 모두의 속성입니다.Set the ExclusionGroup property of both outputs to the same non-zero value (for example, 1) to indicate that each row will be directed to only one of the two outputs. 새 오류 출력에 "MyErrorOutput"과 같이 알기 쉬운 이름을 지정합니다.Give the new error output a distinctive name, such as "MyErrorOutput."

  9. 오류 코드, 오류가 발생한 열의 ID, 오류 설명 등 원하는 오류 정보를 캡처하는 출력 열을 새 오류 출력에 추가합니다.Add additional output columns to the new error output to capture the desired error information, which may include the error code, the ID of the column in which the error occurred, and possibly the error description. 이 예에서는 ErrorColumn 및 ErrorMessage라는 새 열을 만듭니다.This example creates the new columns, ErrorColumn and ErrorMessage. 개발자 고유의 구현에서 미리 정의된 Integration ServicesIntegration Services 오류를 catch하려는 경우 오류 번호에 대한 ErrorCode 열을 추가해야 합니다.If you are catching predefined Integration ServicesIntegration Services errors in your own implementation, make sure to add an ErrorCode column for the error number.

  10. 입력 열의 ID 값은 스크립트 구성 요소에서 오류 조건을 확인하는 데 사용합니다.Note the ID value of the input column or columns that the Script component will check for error conditions. 이 예에서는 이 열 식별자를 사용하여 ErrorColumn 값을 채웁니다.This example uses this column identifier to populate the ErrorColumn value.

  11. 닫기는 스크립트 변환 편집기입니다.Close the Script Transformation Editor.

  12. 스크립트 구성 요소의 출력을 적절한 대상에 연결합니다.Attach the outputs of the Script component to suitable destinations. 임시 테스트용으로 구성하는 데는 플랫 파일 대상이 가장 쉽습니다.Flat file destinations are the easiest to configure for ad hoc testing.

  13. 패키지를 실행합니다.Run the package.

Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)  

  If Row.CountryRegionName <> "Canada" _  
      And Row.CountryRegionName <> "United States" Then  

    Row.ErrorColumn = 68 ' ID of CountryRegionName column  
    Row.ErrorMessage = "Address is not in North America."  
    Row.DirectRowToMyErrorOutput()  

  Else  

    Row.DirectRowToOutput0()  

  End If  

End Sub  
public override void Input0_ProcessInputRow(Input0Buffer Row)  
{  

  if (Row.CountryRegionName!="Canada"&&Row.CountryRegionName!="United States")  

  {  
    Row.ErrorColumn = 68; // ID of CountryRegionName column  
    Row.ErrorMessage = "Address is not in North America.";  
    Row.DirectRowToMyErrorOutput();  

  }  
  else  
  {  

    Row.DirectRowToOutput0();  

  }  

}  

관련 항목:See Also

데이터 오류 처리 Error Handling in Data
데이터 흐름 구성 요소의 오류 출력을 사용 하 여 Using Error Outputs in a Data Flow Component
스크립트 구성 요소를 사용 하 여 동기 변환 만들기Creating a Synchronous Transformation with the Script Component