스크립트 태스크와 스크립트 구성 요소 비교Comparing the Script Task and the Script Component

제어 흐름 창에서 사용할 수 있는 스크립트 태스크는 Integration ServicesIntegration Services 디자이너 및 데이터 흐름 창에서 사용할 수 있는 스크립트 구성 요소에 매우 다른 용도로 사용을 포함 한 Integration ServicesIntegration Services 패키지 합니다.The Script task, available in the Control Flow window of the Integration ServicesIntegration Services designer, and the Script component, available in the Data Flow window, have very different purposes in an Integration ServicesIntegration Services package. 태스크는 일반적인 용도의 제어 흐름 도구인 반면 구성 요소는 데이터 흐름에서 원본, 변환 또는 대상으로 사용됩니다.The task is a general-purpose control flow tool, whereas the component serves as a source, transformation, or destination in the data flow. 이러한 차이에도 불구하고 스크립트 태스크와 스크립트 구성 요소는 사용하는 코딩 도구와 개발자가 사용할 수 있는 패키지의 개체에서 약간의 유사성이 있습니다.Despite their different purposes, however, the Script task and the Script component have some similarities in the coding tools that they use and the objects in the package that they make available to the developer. 이러한 유사점과 차이점을 이해하면 태스크와 구성 요소 모두를 보다 효율적으로 사용할 수 있습니다.Understanding their similarities and differences may help you to use both the task and the component more effectively.

스크립트 태스크와 스크립트 구성 요소의 유사점Similarities between the Script Task and the Script Component

스크립트 태스크와 스크립트 구성 요소는 모두 다음과 같은 일반적인 기능이 있습니다.The Script task and the Script component share the following common features.

기능Feature DescriptionDescription
두 개의 디자인 타임 모드Two design-time modes 태스크에서든 구성 요소에서든 코드를 작성하려면 먼저 편집기에서 속성을 지정한 다음 개발 환경으로 전환합니다.In both the task and the component, you begin by specifying properties in the editor, and then switch to the development environment to write code.
MicrosoftMicrosoft Visual StudioVisual Studio Tools for Applications (VSTA) Visual StudioVisual Studio Tools for Applications (VSTA) 태스크와 구성 요소는 모두 동일한 VSTA IDE를 사용하며 MicrosoftMicrosoft Visual Basic 또는 MicrosoftMicrosoft Visual C#에서 작성된 코드를 지원합니다.Both the task and the component use the same VSTA IDE, and support code written in either MicrosoftMicrosoft Visual Basic or MicrosoftMicrosoft Visual C#.
미리 컴파일된 스크립트Precompiled scripts SQL Server 2008 Integration Services(SSIS)SQL Server 2008 Integration Services (SSIS) 이상에서는 모든 스크립트가 미리 컴파일되어 있습니다.Beginning in SQL Server 2008 Integration Services(SSIS)SQL Server 2008 Integration Services (SSIS), all scripts are precompiled. 이전 버전에서는 스크립트가 미리 컴파일되었는지를 지정할 수 있었습니다.In earlier versions, you could specify whether scripts were precompiled.

스크립트는 보다 빠르게 실행될 수 있도록 이진 코드로 미리 컴파일되지만 이 경우 패키지 크기는 늘어납니다.The script is precompiled into binary code, permitting faster execution, but at the cost of increased package size.
디버깅Debugging 태스크 및 구성 요소 모두 디자인 환경에서 디버깅하는 동안 중단점과 단계별 코드 실행을 지원합니다.Both the task and the component support breakpoints and stepping through code while debugging in the design environment. 자세한 내용은 참조 코딩 및 스크립트 태스크 디버깅코딩 및 스크립트 구성 요소 디버깅합니다.For more information, see Coding and Debugging the Script Task and Coding and Debugging the Script Component.

스크립트 태스크와 스크립트 구성 요소의 차이점Differences between the Script Task and the Script Component

스크립트 태스크와 스크립트 구성 요소는 다음과 같은 중요한 차이점이 있습니다.The Script task and the Script component have the following noteworthy differences.

기능Feature 스크립트 태스크Script Task 스크립트 구성 요소Script Component
제어 흐름/데이터 흐름Control flow / Data flow 스크립트 태스크는 디자이너의 제어 흐름 탭에서 구성되며 패키지의 데이터 흐름 외부에서 실행됩니다.The Script task is configured on the Control Flow tab of the designer and runs outside the data flow of the package. 스크립트 구성 요소는 디자이너의 데이터 흐름 페이지에서 구성되며 데이터 흐름 태스크의 원본, 변환 또는 대상을 나타냅니다.The Script component is configured on the Data Flow page of the designer and represents a source, transformation, or destination in the Data Flow task.
용도Purpose 스크립트 태스크에서는 일반적인 용도의 거의 모든 태스크를 수행할 수 있습니다.A Script task can accomplish almost any general-purpose task. 스크립트 구성 요소를 사용하여 원본, 변환 또는 대상 중 무엇을 만들지를 지정해야 합니다.You must specify whether you want to create a source, transformation, or destination with the Script component.
실행Execution 스크립트 태스크에서는 패키지 워크플로의 일부 지점에서 사용자 지정 코드를 실행합니다.A Script task runs custom code at some point in the package workflow. 사용자 지정 코드를 루프 컨테이너나 이벤트 처리기에 추가하지 않은 경우 해당 코드는 한 번만 실행됩니다.Unless you put it in a loop container or an event handler, it only runs once. 스크립트 구성 요소도 한 번만 실행되지만 일반적으로 스크립트 구성 요소에서는 주 처리 루틴을 데이터 흐름의 각 데이터 행에 대해 한 번씩 실행합니다.A Script component also runs once, but typically it runs its main processing routine once for each row of data in the data flow.
편집기Editor 스크립트 태스크 편집기 세 페이지가: 일반, 스크립트, 및 합니다.The Script Task Editor has three pages: General, Script, and Expressions. ReadOnlyVariablesReadWriteVariables, 및 u a g e 속성 작성할 수 있는 코드에 직접 영향을 줍니다.Only the ReadOnlyVariables and ReadWriteVariables, and ScriptLanguage properties directly affect the code that you can write. 스크립트 변환 편집기 에 최대 4 개의 페이지가: 입력 열, 입 / 출력, 스크립트, 및 연결 관리자합니다.The Script Transformation Editor has up to four pages: Input Columns, Inputs and Outputs, Script, and Connection Managers. 이러한 각 페이지에서 구성하는 메타데이터 및 속성은 코딩에 사용할 수 있도록 자동으로 생성되는 기본 클래스의 멤버를 결정합니다.The metadata and properties that you configure on each of these pages determines the members of the base classes that are autogenerated for your use in coding.
패키지와의 상호 작용Interaction with the package 스크립트 태스크 용으로 작성 된 코드를 사용 하 여는 Dts 속성을 패키지의 다른 기능에 액세스 합니다.In the code written for a Script task, you use the Dts property to access other features of the package. Dts 속성은의 구성원은 ScriptMain 클래스입니다.The Dts property is a member of the ScriptMain class. 스크립트 구성 요소 코드에서는 형식화된 접근자 속성을 사용하여 변수 및 연결 관리자와 같은 일부 패키지 기능에 액세스합니다.In Script component code, you use typed accessor properties to access certain package features such as variables and connection managers.

PreExecute 메서드는 읽기 전용 변수만 액세스할 수 있습니다.The PreExecute method can access only read-only variables. PostExecute 메서드 수 모두 읽기 전용 액세스 및 읽기/쓰기 변수입니다.The PostExecute method can access both read-only and read/write variables.

이러한 메서드에 대 한 자세한 내용은 참조 코딩 및 스크립트 구성 요소 디버깅합니다.For more information about these methods, see Coding and Debugging the Script Component.
변수 사용Using variables 스크립트 태스크에서 사용 하는 Variables 의 속성은 Dts 개체는 작업을 통해 사용할 수 있는 변수에 액세스 ReadOnlyVariablesReadWriteVariables 속성입니다.The Script task uses the Variables property of the Dts object to access variables that are available through the task’s ReadOnlyVariables and ReadWriteVariables properties. 예를 들어For example:

[Visual Basic][Visual Basic]

Dim myVar as String
myVar = Dts.Variables(“MyStringVariable”).Value.ToString

[C#][C#]

string myVar;
myVar = Dts.Variables["MyStringVariable"].Value.ToString();
스크립트 구성 요소에서는 구성 요소의 ReadOnlyVariablesReadWriteVariables 속성에서 만들어진 자동 생성 기본 클래스의 형식화된 접근자 속성을 사용합니다.The Script component uses typed accessor properties of the autogenerated based class, created from the component’s ReadOnlyVariables and ReadWriteVariables properties. 예를 들어For example:

[Visual Basic][Visual Basic]

Dim myVar as String
myVar = Me.Variables.MyStringVariable

[C#][C#]

string myVar;
myVar = this.Variables.MyStringVariable;
연결 사용Using connections 스크립트 태스크에서 사용 하는 Connections 의 속성은 Dts 연결 관리자에 액세스는 패키지에 정의 된 개체입니다.The Script task uses the Connections property of the Dts object to access connection managers defined in the package. 예를 들어For example:

[Visual Basic][Visual Basic]

Dim myFlatFileConnection As String
myFlatFileConnection = _ DirectCast(Dts.Connections("Test Flat File Connection").AcquireConnection(Dts.Transaction), _ String)

[C#][C#]

string myFlatFileConnection;
myFlatFileConnection = (Dts.Connections["Test Flat File Connection"].AcquireConnection(Dts.Transaction) as String);
스크립트 구성 요소에서는 사용자가 편집기의 연결 관리자 페이지에서 입력한 연결 관리자 목록에서 만들어진 자동 생성 기본 클래스의 형식화된 접근자 속성을 사용합니다.The Script component uses typed accessor properties of the autogenerated base class, created from the list of connection managers entered by the user on the Connection Managers page of the editor. 예를 들어For example:

[Visual Basic][Visual Basic]

Dim connMgr As IDTSConnectionManager100
connMgr = Me.Connections.MyADONETConnection

[C#][C#]

IDTSConnectionManager100 connMgr;
connMgr = this.Connections.MyADONETConnection;
이벤트 발생Raising events 스크립트 태스크에서 사용 하는 Events 의 속성은 Dts 이벤트를 발생 시키는 개체입니다.The Script task uses the Events property of the Dts object to raise events. 예를 들어For example:

[Visual Basic][Visual Basic]

Dts.Events.FireError(0, "Event Snippet", _ ex.Message & ControlChars.CrLf & ex.StackTrace, _ "", 0)

[C#][C#]

Dts.Events.FireError(0, "Event Snippet", ex.Message + "\r" + ex.StackTrace, "", 0);
스크립트 구성 요소에서는 IDTSComponentMetaData100 속성에서 반환된 ComponentMetaData 인터페이스의 메서드를 사용하여 오류, 경고 및 정보 메시지를 발생시킵니다.The Script component raises errors, warnings, and informational messages by using the methods of the IDTSComponentMetaData100 interface returned by the ComponentMetaData property. 예를 들어For example:

[Visual Basic][Visual Basic]

Dim myMetadata as IDTSComponentMetaData100 myMetaData = Me.ComponentMetaData myMetaData.FireError(...)
로깅Logging 스크립트 태스크에서 사용 하는 Log 의 메서드는 Dts 설정 된 로그 공급자 개체에 대 한 정보를 기록 합니다.The Script task uses the Log method of the Dts object to log information to enabled log providers. 예를 들어For example:

[Visual Basic][Visual Basic]

Dim bt(0) As Byte Dts.Log("Test Log Event", _ 0, _ bt)

[C#][C#]

byte[] bt = new byte[0];
Dts.Log("Test Log Event", 0, bt);
스크립트 구성 요소에서는 자동으로 생성된 기본 클래스의 Log 메서드를 사용하여 설정된 로그 공급자에 정보를 로깅합니다.The Script component uses the Log method of the autogenerated base class to log information to enabled log providers. 예를 들어For example:

[Visual Basic][Visual Basic]

Dim bt(0) As Byte

Me.Log("Test Log Event", _

0, _

bt)

[C#][C#]

byte[] bt = new byte[0]; this.Log("Test Log Event", 0, bt);
결과 반환Returning results 스크립트 작업 모두를 사용 하는 TaskResult 속성과 선택적 ExecutionValue 속성의는 Dts 개체를 결과 알립니다.The Script task uses both the TaskResult property and the optional ExecutionValue property of the Dts object to notify the runtime of its results. 스크립트 구성 요소는 데이터 흐름 태스크의 일부로 실행되며 이러한 속성 중 하나를 사용하여 결과를 보고하지 않습니다.The Script component runs as a part of the Data Flow task and does not report results using either of these properties.

관련 항목:See Also

스크립트 태스크를 사용 하 여 패키지를 확장합니다. Extending the Package with the Script Task
스크립트 구성 요소와 데이터 흐름 확장Extending the Data Flow with the Script Component