다음을 통해 공유


스크립트 태스크 및 스크립트 구성 요소 비교

적용 대상: Azure Data Factory의 SQL Server SSIS Integration Runtime

Integration Services 디자이너의 제어 흐름 창에서 사용할 수 있는 스크립트 작업과 데이터 흐름 창에서 사용할 수 있는 스크립트 구성 요소는 Integration Services 패키지에서 매우 다른 용도로 사용됩니다. 이 작업은 범용 제어 흐름 도구인 반면, 구성 요소는 데이터 흐름의 원본, 변환 또는 대상으로 사용됩니다. 그러나 스크립트 태스크와 스크립트 구성 요소는 서로 다른 용도에도 불구하고 사용하는 코딩 도구와 개발자가 사용할 수 있도록 하는 패키지의 개체에 몇 가지 유사점이 있습니다. 유사점과 차이점을 이해하면 작업과 구성 요소를 보다 효과적으로 사용하는 데 도움이 될 수 있습니다.

스크립트 태스크와 스크립트 구성 요소 간의 유사점

스크립트 태스크와 스크립트 구성 요소는 다음과 같은 일반적인 기능을 공유합니다.

기능 설명
두 개의 디자인 타임 모드 작업과 구성 요소 모두에서 먼저 편집기에서 속성을 지정한 다음 개발 환경으로 전환하여 코드를 작성합니다.
VsTA(Microsoft Visual Studio Tools for Applications) 작업과 구성 요소 모두 동일한 VSTA IDE를 사용하며 Microsoft Visual Basic 또는 Microsoft Visual C#으로 작성된 코드를 지원합니다.
미리 컴파일된 스크립트 SQL Server 2008 Integration Services(SSIS)부터 모든 스크립트가 미리 컴파일됩니다. 이전 버전에서는 스크립트가 미리 컴파일되었는지 여부를 지정할 수 있습니다.

스크립트는 이진 코드로 미리 컴파일되어 더 빠른 실행을 허용하지만 패키지 크기는 증가합니다.
디버깅 태스크 및 구성 요소 모두 디자인 환경에서 디버깅하는 동안 중단점과 단계별 코드 실행을 지원합니다. 자세한 내용은 스크립트 태스크 코딩 및 디버깅, 스크립트 구성 요소 코딩 및 디버깅을 참조하세요.

스크립트 태스크와 스크립트 구성 요소 간의 차이점

스크립트 태스크와 스크립트 구성 요소는 다음과 같은 중요한 차이점이 있습니다.

기능 스크립트 태스크 S스크립트 구성 요소
제어 흐름/데이터 흐름 스크립트 작업은 디자이너의 제어 흐름 탭에서 구성되고 패키지의 데이터 흐름 외부에서 실행됩니다. 스크립트 구성 요소는 디자이너의 데이터 흐름 페이지에서 구성되며 데이터 흐름 태스크의 원본, 변환 또는 대상을 나타냅니다.
목적 스크립트 태스크는 거의 모든 범용 작업을 수행할 수 있습니다. 스크립트 구성 요소를 사용하여 원본, 변환 또는 대상을 만들 것인지 여부를 지정해야 합니다.
실행 스크립트 태스크에서는 패키지 워크플로의 일부 지점에서 사용자 지정 코드를 실행합니다. 루프 컨테이너 또는 이벤트 처리기에 배치하지 않는 한 한 한 번만 실행됩니다. 스크립트 구성 요소도 한 번만 실행되지만 일반적으로 스크립트 구성 요소에서는 주 처리 루틴을 데이터 흐름의 각 데이터 행에 대해 한 번씩 실행합니다.
편집기 스크립트 태스크 편집기에는 일반, 스크립트이라는 3개 페이지가 있습니다. ReadOnlyVariablesReadWriteVariablesScriptLanguage 속성만 작성할 수 있는 코드에 직접 영향을 줍니다. 스크립트 변환 편집기에는 입력 열, 입/출력, 스크립트연결 관리자 등 최대 4개 페이지가 있습니다. 이러한 각 페이지에서 구성하는 메타데이터 및 속성은 코딩에 사용하기 위해 자동으로 생성된 기본 클래스의 멤버를 결정합니다.
패키지와의 상호 작용 스크립트 작업을 위해 작성된 코드에서 Dts 속성을 사용하여 패키지의 다른 기능에 액세스합니다. Dts 속성은 ScriptMain 클래스의 구성원입니다. 스크립트 구성 요소 코드에서는 형식화된 접근자 속성을 사용하여 변수 및 연결 관리자와 같은 특정 패키지 기능에 액세스합니다.

PreExecute 메서드는 읽기 전용 변수에만 액세스할 수 있습니다. PostExecute 메서드는 읽기 전용 및 읽기/쓰기 변수 모두에 액세스할 수 있습니다.

이러한 메서드에 대한 자세한 내용은 스크립트 구성 요소 코딩 및 디버깅을 참조 하세요.
변수 사용 스크립트 태스크는 Dts 개체의 속성을 사용하여 Variables 태스크 ReadOnlyVariablesReadWriteVariables 속성을 통해 사용할 수 있는 변수에 액세스합니다. 예시:

[Visual Basic]

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

[C#]

string myVar;
myVar = Dts.Variables["MyStringVariable"].Value.ToString();
스크립트 구성 요소에서는 구성 요소의 ReadOnlyVariablesReadWriteVariables 속성에서 만들어진 자동 생성 기본 클래스의 형식화된 접근자 속성을 사용합니다. 예시:

[Visual Basic]

Dim myVar as String
myVar = Me.Variables.MyStringVariable

[C#]

string myVar;
myVar = this.Variables.MyStringVariable;
연결 사용 스크립트 태스크는 Dts 개체의 속성을 사용하여 Connections 패키지에 정의된 연결 관리자에 액세스합니다. 예시:

[Visual Basic]

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

[C#]

string myFlatFileConnection;
myFlatFileConnection = (Dts.Connections["Test Flat File Connection"].AcquireConnection(Dts.Transaction) as String);
스크립트 구성 요소는 편집기의 연결 관리자 페이지에서 사용자가 입력한 연결 관리자 목록에서 만든 자동 생성된 기본 클래스의 형식화된 접근자 속성을 사용합니다. 예시:

[Visual Basic]

Dim connMgr As IDTSConnectionManager100
connMgr = Me.Connections.MyADONETConnection

[C#]

IDTSConnectionManager100 connMgr;
connMgr = this.Connections.MyADONETConnection;
이벤트 발생 스크립트 태스크는 Dts 개체의 속성을 사용하여 Events 이벤트를 발생합니다. 예시:

[Visual Basic]

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

[C#]

Dts.Events.FireError(0, "Event Snippet", ex.Message + "\r" + ex.StackTrace, "", 0);
스크립트 구성 요소는 속성에서 반환 ComponentMetaData 된 인터페이스의 IDTSComponentMetaData100 메서드를 사용하여 오류, 경고 및 정보 메시지를 발생합니다. 예시:

[Visual Basic]

Dim myMetadata as IDTSComponentMetaData100 myMetaData = Me.ComponentMetaData myMetaData.FireError(...)
로깅 스크립트 태스크는 Dts 개체의 메서드를 사용하여 Log 사용 가능한 로그 공급자에 정보를 기록합니다. 예시:

[Visual Basic]

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

[C#]

byte[] bt = new byte[0];
Dts.Log("Test Log Event", 0, bt);
스크립트 구성 요소는 자동 생성된 기본 클래스의 메서드를 사용하여 Log 활성화된 로그 공급자에 정보를 기록합니다. 예시:

[Visual Basic]

Dim bt(0) As Byte

Me.Log("Test Log Event", _

0, _

bt)

[C#]

byte[] bt = new byte[0]; this.Log("Test Log Event", 0, bt);
결과 반환 스크립트 태스크는 Dts 개체의 속성과 선택적 ExecutionValue 속성을 모두 TaskResult 사용하여 런타임에 결과를 알립니다. 스크립트 구성 요소는 데이터 흐름 태스크의 일부로 실행되며 이러한 속성 중 하나를 사용하여 결과를 보고하지 않습니다.

참고 항목

스크립트 태스크를 사용하여 패키지 확장
스크립트 구성 요소를 사용하여 데이터 흐름 확장