스크립트 구성 요소 편집기에서 스크립트 구성 요소 구성Configuring the Script Component in the Script Component Editor

스크립트 구성 요소에서 사용자 지정 코드를 작성하려면, 먼저 만들려는 데이터 흐름 구성 요소의 유형(원본, 변환 또는 대상)을 선택한 다음, 스크립트 변환 편집기에서 구성 요소의 메타데이터 및 속성을 구성해야 합니다.Before you write custom code in the Script component, you must select the type of data flow component that you want to create—source, transformation, or destination—and then configure the component's metadata and properties in the Script Transformation Editor.

만들 구성 요소 유형 선택Selecting the Type of Component to Create

SSISSSIS 디자이너의 데이터 흐름 창에 스크립트 구성 요소를 추가하면 스크립트 구성 요소 유형 선택 대화 상자가 표시됩니다.When you add a Script component to the Data Flow pane of SSISSSIS Designer, the Select Script Component Type dialog box appears. 이 대화 상자에서 구성 요소를 원본, 변환 또는 대상으로 미리 구성합니다.You preconfigure the component as a source, transformation, or destination. 이 초기 항목을 선택한 후에 스크립트 변환 편집기에서 구성 요소를 계속 구성할 수 있습니다.After you make this initial selection, you can continue to configure the component in the Script Transformation Editor.

스크립트 구성 요소에 대한 기본 스크립트 언어를 설정하려면 옵션 대화 상자의 일반 페이지에서 스크립트 언어 옵션을 사용합니다.To set the default script language for the Script component, use the Scripting language option on the General page of the Options dialog box. 자세한 내용은 General Page을 참조하세요.For more information, see General Page.

두 가지 디자인 타임 모드 이해Understanding the Two Design-Time Modes

SSISSSIS 디자이너에서 스크립트 구성 요소에는 메타데이터 디자인 모드와 코드 디자인 모드의 두 가지 모드가 있습니다.In SSISSSIS Designer, the Script component has two modes: metadata design mode and code design mode.

스크립트 변환 편집기를 열면 구성 요소가 메타데이터 디자인 모드로 전환됩니다.When you open the Script Transformation Editor, the component enters metadata design mode. 이 모드에서는 입력 열을 선택하고 출력 및 출력 열을 추가하거나 구성할 수 있지만 코드를 작성할 수는 없습니다.In this mode, you can select input columns, and add or configure outputs and output columns, but you cannot write code. 구성 요소의 메타데이터를 구성한 후에 코드 디자인 모드로 전환하여 스크립트를 작성할 수 있습니다.After you have configured the component's metadata, you can switch to code design mode to write the script.

스크립트 편집을 클릭하여 코드 디자인 모드로 전환하면, 스크립트 구성 요소에서 추가로 변경하지 할 수 없도록 메타데이터를 잠근 다음 입력 및 출력의 메타데이터에서 기본 코드를 자동으로 생성합니다.When you switch to code design mode by clicking Edit Script, the Script component locks metadata to prevent additional changes, and then automatically generates base code from the metadata of the inputs and outputs. 이 자동 생성 코드가 완성된 후 사용자 지정 코드를 입력할 수 있습니다.After the autogenerated code is complete, you will be able to enter your custom code. 코드에서는 자동으로 생성된 기본 클래스를 사용하여 입력 행을 처리하고, 버퍼와 버퍼의 열에 액세스하고, 패키지에서 연결 관리자와 변수를 모두 강력한 형식의 개체로 검색할 수 있습니다.Your code uses the auto-generated base classes to process input rows, to access buffers and columns in the buffers, and to retrieve connection managers and variables from the package, all as strongly-typed objects.

코드 디자인 모드에서 사용자 지정 코드를 입력한 후에는 메타데이터 디자인 모드로 다시 전환할 수 있습니다.After entering your custom code in code design mode, you can switch back to metadata design mode. 메타데이터 디자인 모드로 전환해도 입력한 코드는 삭제되지 않지만 메타데이터를 추가로 변경하면 기본 클래스가 다시 생성됩니다.This does not delete any code that you have entered; however, subsequent changes to the metadata cause the base class to be regenerated. 메타데이터 변경으로 인해 사용자 지정 코드에서 참조하는 개체가 더 이상 존재하지 않거나 수정된 경우에는 이후 구성 요소의 유효성 검사에 실패할 수 있습니다.Afterward, your component may fail validation because objects referenced by your custom code may no longer exist or may have been modified. 이 경우 다시 생성된 기본 클래스에 대해 성공적으로 컴파일할 수 있도록 코드를 수동으로 수정해야 합니다.In this case, you must fix your code manually so that it can be compiled successfully against the regenerated base class.

메타데이터 디자인 모드에서 구성 요소 구성Configuring the Component in Metadata Design Mode

메타데이터 디자인 모드에서는 입력 열을 선택하고 출력과 출력 열을 추가 및 구성할 수 있지만 코드를 작성할 수는 없습니다.In metadata design mode, you can select input columns, and add and configure outputs and output columns, but you cannot write code. 구성 요소의 메타데이터를 구성한 후에 코드 디자인 모드로 전환하여 스크립트를 작성해야 합니다.After you have configured the component's metadata, switch to code design mode to write the script.

사용자 지정 편집기에서 구성해야 하는 속성은 스크립트 구성 요소의 사용 방식에 따라 달라집니다.The properties that you must configure in the custom editor depend on the usage of the Script component. 스크립트 구성 요소는 원본, 변환 또는 대상으로 구성될 수 있으며,The Script component can be configured as a source, a transformation, or a destination. 구성 요소의 사용 방법에 따라 입력이나 출력 또는 모두를 지원합니다.Depending on how the component is used, it supports either an input or outputs or both. 작성하는 사용자 지정 코드에서는 입력 및 출력 행과 열을 처리합니다.The custom code that you will write processes the input and output rows and columns.

스크립트 변환 편집기의 입력 열 페이지Inputs Columns Page of the Script Transformation Editor

변환과 대상에 대해서는 스크립트 변환 편집기입력 열 페이지가 표시되지만, 원본에 대해서는 표시되지 않습니다.The Input Columns page of the Script Transformation Editor is displayed for transformations and destinations, but not for sources. 이 페이지에서 사용자 지정 스크립트에서 사용할 사용 가능한 입력 열을 선택하고 해당 열에 대한 읽기 전용 또는 읽기/쓰기 권한을 지정합니다.On this page, you select the available input columns that you want to make available to your custom script, and specify read-only or read/write access to them.

이 메타데이터를 기반으로 생성되는 코드 프로젝트에서 BufferWrapper 프로젝트 항목에는 각 입력에 대한 클래스가 포함되며 이 클래스에는 선택한 각 입력 열에 대한 형식화된 접근자 속성이 포함됩니다.In the code project that will be generated based on this metadata, the BufferWrapper project item contains a class for each input, and this class contains typed accessor properties for each input column selected. 예를 들어 CustomerInput이라는 입력에서 정수 CustomerID 열과 문자열 CustomerName 열을 선택하는 경우, BufferWrapper 프로젝트 항목에는 ScriptBuffer에서 파생된 CustomerInput 클래스가 포함되며, 이 CustomerInput 클래스는 CustomerID라는 정수 속성과 CustomerName이라는 문자열 속성을 노출합니다.For example, if you select an integer CustomerID column and a string CustomerName column from an input named CustomerInput, the BufferWrapper project item will contain a CustomerInput class that derives from ScriptBuffer, and the CustomerInput class will expose an integer property named CustomerID and a string property named CustomerName. 이 규칙을 통해 다음과 같이 형식 검사를 사용하는 코드를 작성할 수 있습니다.This convention makes it possible to write code with type-checking like the following:

Dim currentCustomerID as Integer = CustomerInput.CustomerID  
Dim currentCustomerName as String = CustomerInput.CustomerName  

특정 유형의 데이터 흐름 구성 요소에 대한 입력 열을 구성하는 방법에 대한 자세한 내용은 특정 유형의 스크립트 구성 요소 개발의 해당 예제를 참조하세요.For more information about how to configure input columns for a specific type of data flow component, see the appropriate example under Developing Specific Types of Script Components.

스크립트 변환 편집기의 입/출력 페이지Inputs and Outputs Page of the Script Transformation Editor

스크립트 변환 편집기입/출력 페이지는 원본, 변환 및 대상에 대해 표시됩니다.The Input and Outputs page of the Script Transformation Editor is displayed for sources, transformations, and destinations. 이 페이지에서는 사용자 지정 스크립트에서 사용할 입력, 출력 및 출력 열을 추가하고 제거하고 구성할 수 있습니다. 단 다음과 같은 제한 사항이 있습니다.On this page, you add, remove, and configure inputs, outputs, and output columns that you want to use in your custom script, within the following limitations:

  • 원본으로 사용되는 스크립트 구성 요소는 입력을 사용하지 않으며 여러 출력을 지원합니다.When used as a source, the Script component has no input and supports multiple outputs.

  • 변환으로 사용되는 스크립트 구성 요소는 하나의 입력과 여러 출력을 지원합니다.When used as a transformation, the Script component supports one input and multiple outputs.

  • 대상으로 사용되는 스크립트 구성 요소는 하나의 입력을 지원하며 출력은 사용하지 않습니다.When used as a destination, the Script component supports one input and has no outputs.

    이 메타데이터를 기반으로 생성되는 코드 프로젝트에서 BufferWrapper 프로젝트 항목에는 각 입력 및 출력에 대한 클래스가 포함됩니다.In the code project that will be generated based on this metadata, the BufferWrapper project item contains a class for each input and output. 예를 들어 CustomerOutput이라는 출력을 만드는 경우 BufferWrapper 프로젝트 항목에는 ScriptBuffer에서 파생된 CustomerOutput 클래스가 포함되며, 이 CustomerOutput 클래스는 만든 각 출력 열에 대해 형식화된 접근자 속성을 포함합니다.For example, if you create an output named CustomerOutput, the BufferWrapper project item will contain a CustomerOutput class that derives from ScriptBuffer, and the CustomerOutput class will contain typed accessor properties for each output column created.

    입/출력 페이지에서만 출력 열을 구성할 수 있습니다.You can configure output columns only on the Input and Outputs page. 입력 열 페이지에서 변환 및 대상에 대한 입력 열을 선택할 수 있습니다.You can select input columns for transformations and destinations on the Input Columns page. BufferWrapper 프로젝트 항목에 만들어진 형식화된 접근자 속성은 출력 열에 대한 쓰기 전용 속성이 됩니다.The typed accessor properties created for you in the BufferWrapper project item will be write-only for output columns. 입력 열의 접근자 속성은 입력 열 페이지에서 각 열에 대해 선택한 사용 유형에 따라 읽기 전용 또는 읽기/쓰기가 됩니다.The accessor properties for input columns will be read-only or read/write depending on the usage type that you have selected for each column on the Input Columns page.

    특정 유형의 데이터 흐름 구성 요소에 대한 입력 및 출력을 구성하는 방법에 대한 자세한 내용은 특정 유형의 스크립트 구성 요소 개발의 해당 예제를 참조하세요.For more information about configuring inputs and outputs for a specific type of data flow component see the appropriate example under Developing Specific Types of Script Components.

참고

오류 행의 자동 처리를 위해 스크립트 구성 요소의 출력을 오류 출력으로 직접 구성할 수는 없지만 적절할 때 추가 출력을 만들고 스크립트를 사용하여 행을 이 출력으로 전송하는 방식으로 오류 출력의 기능을 재현할 수 있습니다.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 an error output by creating an additional output and using script to direct rows to this output when appropriate. 자세한 내용은 스크립트 구성 요소의 오류 출력 시뮬레이션을 참조하세요.For more information, see Simulating an Error Output for the Script Component.

출력의 ExclusionGroup 및 SynchronousInputID 속성ExclusionGroup and SynchronousInputID Properties of Outputs

ExclusionGroup 속성에는 동기 출력이 있는 변환에서만 0이 아닌 값이 포함되며, 여기서 코드는 필터링 또는 분기를 수행하고 각 행을 0이 아닌 동일한 ExclusionGroup 값을 공유하는 출력 중 하나에 보냅니다.The ExclusionGroup property has a non-zero value only in transformations with synchronous outputs, where your code performs filtering or branching and directs each row to one of the outputs that share the same non-zero ExclusionGroup value. 예를 들어 변환에서는 행을 기본 출력이나 오류 출력 중 하나로 전송할 수 있습니다.For example, the transformation can direct rows either to the default output or to an error output. 이 시나리오에 대한 추가 출력을 만들 때는 SynchronousInputID 속성의 값을 구성 요소의 입력에 대한 ID와 일치하는 정수로 설정해야 합니다.When you create additional outputs for this scenario, make sure to set the value of the SynchronousInputID property to the integer that matches the ID of the component's input.

SynchronousInputID 속성에는 동기 출력이 있는 변환에서만 0이 아닌 값이 포함됩니다.The SynchronousInputID property has a non-zero value only in transformations with synchronous outputs. 이 속성 값이 0이면 해당 출력이 비동기적임을 나타냅니다.If the value of this property is zero, it means that the output is asynchronous. 새 행을 추가하지 않고 행을 선택된 출력으로 전달하는 동기 출력의 경우 이 속성에는 구성 요소의 입력에 대한 ID가 있어야 합니다.For a synchronous output, where rows are passed through to the selected output or outputs without adding any new rows, this property should contain the ID of the component's input.

참고

스크립트 변환 편집기에서 첫 번째 출력을 만들 때 편집기는 출력의 SynchronousInputID 속성을 구성 요소의 입력에 대한 ID로 설정합니다.When the Script Transformation Editor creates the first output, the editor sets the SynchronousInputID property of the output to the ID of the component's input. 그러나 이후 출력을 만들 때는 이러한 출력의 SynchronousInputID 속성을 0으로 설정합니다.However, when the editor creates subsequent outputs, the editor sets the SynchronousInputID properties of those outputs to zero.

동기 출력을 사용하여 구성 요소를 만드는 경우 각 출력의 SynchronousInputID 속성은 구성 요소의 입력에 대한 ID로 설정되어야 합니다.If you are creating a component with synchronous outputs, each output must have its SynchronousInputID property set to the ID of the component’s input. 따라서 편집기에서 첫 번째 출력 이후에 만든 각 출력에는 SynchronousInputID 값이 0에서 구성 요소의 입력에 대한 ID로 변경되어야 합니다.Therefore, each output that the editor creates after the first output must have its SynchronousInputID value changed from zero to the ID of the component's input.

비동기 출력을 사용하여 구성 요소를 만드는 경우 각 출력의 SynchronousInputID 속성은 0으로 설정되어야 합니다.If you are creating a component with asynchronous outputs, each output must have its SynchronousInputID property set to zero. 따라서 첫 번째 출력에는 SynchronousInputID 값이 구성 요소의 입력에 대한 ID에서 0으로 변경되어야 합니다.Therefore, the first output must have its SynchronousInputID value changed from the ID of the component’s input to zero.

스크립트 구성 요소에서 두 개의 동기 출력 중 하나에 행을 보내는 예제는 스크립트 구성 요소를 사용하여 동기 변환 만들기를 참조하세요.For an example of directing rows to one of two synchronous outputs in the Script component, see Creating a Synchronous Transformation with the Script Component.

생성된 스크립트의 개체 이름Object Names in Generated Script

스크립트 구성 요소에서는 입력 및 출력의 이름을 구문 분석하고, 입력 및 출력의 열 이름을 구문 분석하며, 이러한 이름을 기반으로 BufferWrapper 프로젝트 항목에 클래스 및 속성을 생성합니다.The Script component parses the names of inputs and outputs, and parse the names of columns in the inputs and outputs, and based on these names generates classes and properties in the BufferWrapper project item. 찾은 이름에 UppercaseLetter, LowercaseLetter, TitlecaseLetter, ModifierLetter, OtherLetter 또는 DecimalDigitLetter 유니코드 범주에 속하지 않은 문자가 포함되어 있으면 생성된 이름에서 유효하지 않은 해당 문자가 삭제됩니다.If the found names include characters that do not belong to the Unicode categories UppercaseLetter, LowercaseLetter, TitlecaseLetter, ModifierLetter, OtherLetter, or DecimalDigitLetter, the invalid characters are dropped in the generated names. 예를 들어 공백은 삭제되므로 FirstName 및 [First Name] 이름의 두 입력 열이 모두 FirstName이라는 열 이름을 갖는 것으로 해석되며 예기치 않은 결과가 발생합니다.For example, spaces are dropped, therefore two input columns that have the names FirstName and [First Name] are both interpreted as having the column name FirstName, with unpredictable results. 이러한 문제가 발생하지 않도록 하려면 스크립트 구성 요소에서 사용하는 입력 및 출력의 이름과 입력 및 출력 열의 이름에는 이 섹션에 나열된 유니코드 범주의 문자만 사용해야 합니다.To avoid this situation, the names of inputs and outputs and of input and output columns used by the Script component should contain only characters in the Unicode categories listed in this section.

스크립트 변환 편집기의 스크립트 페이지Script Page of the Script Transformation Editor

스크립트 태스크 편집기스크립트 페이지에서는 스크립트 태스크에 대한 고유한 이름과 설명을 지정합니다.On the Script page of the Script Task Editor, you assign a unique name and a description for the Script task. 다음 속성의 값을 지정할 수도 있습니다.You can also assign values for the following properties.

참고

SQL Server 2008 Integration Services(SSIS)SQL Server 2008 Integration Services (SSIS) 와 그 이후 버전에서는 모든 스크립트가 미리 컴파일됩니다.In SQL Server 2008 Integration Services(SSIS)SQL Server 2008 Integration Services (SSIS) and later versions, all scripts are precompiled. 이전 버전에서는 태스크에 대한 Precompile 속성을 설정하여 스크립트가 미리 컴파일되었는지 여부를 지정했습니다.In previous versions, you specified whether scripts were precompiled by setting a Precompile property for the task.

ValidateExternalMetadata 속성ValidateExternalMetadata Property

ValidateExternalMetadata 속성의 부울 값은 구성 요소에서 디자인 타임에 외부 데이터 원본에 대한 유효성 검사를 수행해야 하는지 또는 런타임까지 유효성 검사를 연기해야 하는지 여부를 지정합니다.The Boolean value of the ValidateExternalMetadata property specifies whether the component should perform validation against external data sources at design time, or whether it should postpone validation until run time. 기본적으로 이 속성의 값은 True입니다. 즉, 디자인 타임과 런타임 모두에 외부 메타데이터에 대한 유효성이 검사됩니다.By default, the value of this property is True; that is, the external metadata is validated both at design time and at run time. 디자인 타임에 외부 데이터 원본을 사용할 수 없는 경우(예: 패키지에서 원본을 다운로드하거나 런타임에만 대상을 만드는 경우) 이 속성의 값을 False로 설정할 수 있습니다.You may want to set the value of this property to False when an external data source is not available at design time: for example, when the package downloads the source or creates the destination only at run time.

ReadOnlyVariables 및 ReadWriteVariables 속성ReadOnlyVariables and ReadWriteVariables Properties

쉼표로 구분된 기존 변수 목록을 이러한 속성의 값으로 입력하여 스크립트 구성 요소 코드 내에서 해당 변수를 읽기 전용 또는 읽기/쓰기 권한으로 액세스할 수 있게 할 수 있습니다.You can enter comma-delimited lists of existing variables as the values of these properties to make the variables available for read-only or read/write access within the Script component code. 변수는 코드에서 자동으로 생성된 기본 클래스의 ReadOnlyVariablesReadWriteVariables 속성을 통해 액세스할 수 있습니다.Variables are accessed in code through the ReadOnlyVariables and ReadWriteVariables properties of the autogenerated base class. 자세한 내용은 스크립트 구성 요소에서 변수 사용을 참조하세요.For more information, see Using Variables in the Script Component.

참고

변수 이름은 대소문자를 구분합니다.Variable names are case-sensitive.

ScriptLanguageScriptLanguage

스크립트 구성 요소에 대한 프로그래밍 언어로 MicrosoftMicrosoft Visual Basic 또는 MicrosoftMicrosoft Visual C#을 선택할 수 있습니다.You can select either MicrosoftMicrosoft Visual Basic or MicrosoftMicrosoft Visual C# as the programming language for the Script component.

스크립트 편집 단추Edit Script Button

스크립트 편집 단추를 클릭하면 사용자 지정 스크립트를 작성할 수 있는 VSTA( MicrosoftMicrosoft Visual StudioVisual Studio Tools for Applications) IDE가 열립니다.The Edit Script button opens the MicrosoftMicrosoft Visual StudioVisual Studio Tools for Applications (VSTA) IDE in which you write your custom script. 자세한 내용은 스크립트 구성 요소 코딩 및 디버깅을 참조하세요.For more information, see Coding and Debugging the Script Component.

스크립트 변환 편집기의 연결 관리자 페이지Connection Managers Page of the Script Transformation Editor

스크립트 변환 편집기연결 관리자 페이지에서는 사용자 지정 스크립트에 사용할 연결 관리자를 추가하거나 제거합니다.On the Connection Managers page of the Script Transformation Editor, you add and remove connection managers that you want to use in your custom script. 일반적으로 원본 또는 대상 구성 요소를 만들 때는 연결 관리자를 참조해야 합니다.Normally you need to reference connection managers when you create a source or destination component.

이 메타데이터를 기반으로 생성되는 코드 프로젝트에서 ComponentWrapper 프로젝트 항목에는 선택한 각 연결 관리자에 대한 형식화된 접근자 속성이 있는 Connections 컬렉션 클래스가 포함됩니다.In the code project that will be generated based on this metadata, the ComponentWrapper project item contains a Connections collection class that has a typed accessor property for each selected connection manager. 형식화된 각 접근자 속성은 연결 관리자와 동일한 이름을 가지며 연결 관리자에 대한 참조를 IDTSConnectionManager100의 인스턴스로 반환합니다.Each typed accessor property has the same name as the connection manager itself and returns a reference to the connection manager as an instance of IDTSConnectionManager100. 예를 들어 편집기의 연결 관리자 페이지에서 MyADONETConnection이라는 연결 관리자를 추가한 경우 다음 코드를 사용하여 스크립트에서 해당 연결 관리자에 대한 참조를 가져올 수 있습니다.For example, if you have added a connection manager named MyADONETConnection on the Connection Managers page of the editor, you can obtain a reference to the connection manager in your script by using the following code:

Dim myADONETConnectionManager As IDTSConnectionManager100 = _  
    Me.Connections.MyADONETConnection  

자세한 내용은 스크립트 구성 요소에서 데이터 원본에 연결을 참조하세요.For more information, see Connecting to Data Sources in the Script Component.

참고 항목See Also

스크립트 구성 요소 코딩 및 디버깅Coding and Debugging the Script Component