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

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 which you configure metadata and set component properties. 메타데이터 디자인 모드에서 스크립트 구성 요소 속성을 설정하고 입/출력을 구성한 후에는 코드 디자인 모드로 전환하여 사용자 지정 스크립트를 작성할 수 있습니다.After you have set the properties of the Script component and configured the input and outputs in metadata design mode, you can switch to code design mode to write your custom script. 메타 데이터 디자인 모드와 코드 디자인 모드에 대 한 자세한 내용은 참조 스크립트 구성 요소 편집기에서 스크립트 구성 요소 구성합니다.For more information about metadata design mode and code design mode, see Configuring the Script Component in the Script Component Editor.

코드 디자인 모드에서 스크립트 작성Writing the Script in Code Design Mode

스크립트 구성 요소 개발 환경Script Component Development Environment

스크립트를 작성 하려면 클릭 스크립트 편집스크립트 의 페이지는 스크립트 변환 편집기 열려는 MicrosoftMicrosoft Visual StudioVisual Studio VSTA Tools for Applications () IDE.To write your script, click Edit Script on the Script page of the Script Transformation Editor to open the MicrosoftMicrosoft Visual StudioVisual Studio Tools for Applications (VSTA) IDE. VSTA IDE에는 색 구분 기능이 포함된 Visual StudioVisual Studio 편집기, IntelliSense, 개체 브라우저 등 Visual StudioVisual Studio .NET 환경의 모든 표준 기능이 포함됩니다.The VSTA IDE includes all the standard features of the Visual StudioVisual Studio .NET environment, such as the color-coded Visual StudioVisual Studio editor, IntelliSense, and Object Browser.

스크립트 코드는 MicrosoftMicrosoft Visual Basic 또는 MicrosoftMicrosoft Visual C#으로 작성됩니다.Script code is written in MicrosoftMicrosoft Visual Basic or MicrosoftMicrosoft Visual C#. 설정 하 여 스크립트 언어를 지정 된 u a g e 속성에는 스크립트 변환 편집기합니다.You specify the script language by setting the ScriptLanguage property in the Script Transformation Editor. 다른 프로그래밍 언어를 사용하고 싶으면 원하는 언어로 사용자 지정 어셈블리를 개발하고 스크립트 구성 요소의 코드에서 해당 기능을 호출할 수 있습니다.If you prefer to use another programming language, you can develop a custom assembly in your language of choice and call its functionality from the code in the Script component.

스크립트 구성 요소에서 작성하는 스크립트는 패키지 정의에 저장됩니다.The script that you create in the Script component is stored in the package definition. 별도의 스크립트 파일은 없습니다.There is no separate script file. 따라서 스크립트 구성 요소를 사용해도 패키지 배포에 영향을 주지 않습니다.Therefore, the use of the Script component does not affect package deployment.

참고

패키지를 디자인하는 동안 스크립트 코드는 임시로 프로젝트 파일에 기록됩니다.While you design the package, the script code is temporarily written to a project file. 중요한 정보를 파일에 저장하면 보안상 위험할 수 있으므로 암호와 같은 중요한 정보는 스크립트 코드에 포함하지 않는 것이 좋습니다.Because storing sensitive information in a file is a potential security risk, we recommended that you do not include sensitive information such as passwords in the script code.

기본적으로 Option Strict IDE에서 사용할 수 없습니다.By default, Option Strict is disabled in the IDE.

스크립트 구성 요소 프로젝트 구조Script Component Project Structure

스크립트 구성 요소의 장점은, 개발자가 작성해야 할 코드 분량을 줄여주는 인프라 코드를 생성할 수 있다는 것입니다.The power of the Script component is that it can generate infrastructure code that reduces the amount of code that you must write. 이 기능은 입/출력 및 해당 열과 속성이 고정되어 있고 미리 알려져 있다는 사실을 기반으로 합니다.This feature relies on the fact that inputs and outputs and their columns and properties are fixed and known in advance. 따라서 그 이후에 구성 요소의 메타데이터 내용을 변경하면 작성한 코드가 무효화될 수 있습니다.Therefore, any subsequent changes that you make to the component's metadata may invalidate the code that you have written. 그러면 패키지 실행 중 컴파일 오류가 발생합니다.This causes compilation errors during execution of the package.

스크립트 구성 요소 프로젝트의 프로젝트 항목 및 클래스Project Items and Classes in the Script Component Project

코드 디자인 모드로 전환 하면 VSTA IDE가 열리고는 ScriptMain 프로젝트 항목입니다.When you switch to code design mode, the VSTA IDE opens and displays the ScriptMain project item. ScriptMain 프로젝트 항목에 편집 가능한 포함 ScriptMain 스크립트에 대 한 가리킨 항목으로 사용 하 고 코드를 작성 하는 클래스입니다.The ScriptMain project item contains the editable ScriptMain class, which serves as the entry point for the script and which is where you write your code. 클래스의 코드 요소는 스크립트 태스크용으로 선택한 프로그래밍 언어에 따라 다릅니다.The code elements in the class vary depending on the programming language that you selected for the Script task.

스크립트 프로젝트는 다음과 같은 두 가지 추가 자동 생성 읽기 전용 프로젝트 항목을 포함합니다.The script project contains two additional auto-generated read-only project items:

  • ComponentWrapper 세 개의 클래스를 포함 하는 프로젝트 항목:The ComponentWrapper project item contains three classes:

    • UserComponent 클래스에서 상속 하는 ScriptComponent 메서드 및 데이터를 처리 하 고 패키지와 상호 작용에 사용할 속성을 포함 합니다.The UserComponent class, which inherits from ScriptComponent and contains the methods and properties that you will use to process data and to interact with the package. ScriptMain 클래스에서 상속 된 UserComponent 클래스입니다.The ScriptMain class inherits from the UserComponent class.

    • A 연결 스크립트 변환 편집기의 연결 관리자 페이지에서 선택한 연결에 대 한 참조를 포함 하는 컬렉션 클래스입니다.A Connections collection class that contains references to the connections selected on the Connection Manager page of the Script Transformation Editor.

    • A 변수 에 입력 한 변수에 대 한 참조를 포함 하는 컬렉션 클래스는 ReadOnlyVariableReadWriteVariables 속성에는 스크립트 의 페이지는 스크립트 변환 편집기합니다.A Variables collection class that contains references to the variables entered in the ReadOnlyVariable and ReadWriteVariables properties on the Script page of the Script Transformation Editor.

  • BufferWrapper 에서 상속 된 클래스를 포함 하는 프로젝트 항목 ScriptBuffer 각 입 / 출력에 구성 된는 입 / 출력 의 페이지는 스크립트 변환 편집기합니다.The BufferWrapper project item contains a class that inherits from ScriptBuffer for each input and output configured on the Inputs and Outputs page of the Script Transformation Editor. 각 클래스는 구성된 입/출력 열과 그 열이 포함된 데이터 흐름 버퍼에 해당하는 형식화된 접근자 속성을 포함합니다.Each of these classes contains typed accessor properties that correspond to the configured input and output columns, and the data flow buffers that contain the columns.

    이러한 개체, 메서드 및 속성을 사용 하는 방법에 대 한 정보를 참조 하십시오. 스크립트 구성 요소 개체 모델 이해합니다.For information about how to use these objects, methods, and properties, see Understanding the Script Component Object Model. 특정 유형의 스크립트 구성 요소에서 메서드 및 이러한 클래스의 속성을 사용 하는 방법에 대 한 내용은 섹션을 참조 하십시오. Additional Script Component Examples합니다.For information about how to use the methods and properties of these classes in a particular type of Script component, see the section Additional Script Component Examples. 예 항목에는 전체 코드 예제도 들어 있습니다.The example topics also contain complete code samples.

    스크립트 구성 요소를 변환으로 구성할 때의 ScriptMain 프로젝트 항목에는 다음 자동 생성 코드가 포함 되어 있습니다.When you configure the Script component as a transformation, the ScriptMain project item contains the following autogenerated code. 코드 템플릿은 또한 스크립트 구성 요소에 대한 개요와 SSIS 개체(예: 변수, 이벤트 및 연결)를 검색 및 조작하는 방법에 대한 추가 정보를 제공합니다.The code template also provides an overview of the Script component, and additional information on how to retrieve and manipulate SSIS objects, such as variables, events, and connections.

' Microsoft SQL Server Integration Services Script Component  
' Write scripts using Microsoft Visual Basic 2008.  
' ScriptMain is the entry point class of the script.  

Imports System  
Imports System.Data  
Imports System.Math  
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper  
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper  

<Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute> _  
<CLSCompliant(False)> _  
Public Class ScriptMain  
    Inherits UserComponent  

    Public Overrides Sub PreExecute()  
        MyBase.PreExecute()  
        '  
        ' Add your code here for preprocessing or remove if not needed  
        '  
    End Sub  

    Public Overrides Sub PostExecute()  
        MyBase.PostExecute()  
        '  
        ' Add your code here for postprocessing or remove if not needed  
        ' You can set read/write variables here, for example:  
        ' Me.Variables.MyIntVar = 100  
        '  
    End Sub  

    Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)  
        '  
        ' Add your code here  
        '  
    End Sub  

End Class  
/* Microsoft SQL Server Integration Services user script component  
*  Write scripts using Microsoft Visual C# 2008.  
*  ScriptMain is the entry point class of the script.*/  

using System;  
using System.Data;  
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;  
using Microsoft.SqlServer.Dts.Runtime.Wrapper;  

[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]  
public class ScriptMain : UserComponent  
{  

    public override void PreExecute()  
    {  
        base.PreExecute();  
        /*  
          Add your code here for preprocessing or remove if not needed  
        */  
    }  

    public override void PostExecute()  
    {  
        base.PostExecute();  
        /*  
          Add your code here for postprocessing or remove if not needed  
          You can set read/write variables here, for example:  
          Variables.MyIntVar = 100  
        */  
    }  

    public override void Input0_ProcessInputRow(Input0Buffer Row)  
    {  
        /*  
          Add your code here  
        */  
    }  

}  

스크립트 구성 요소 프로젝트의 추가 프로젝트 항목Additional Project Items in the Script Component Project

스크립트 구성 요소 프로젝트 기본값 이외의 다른 항목에 포함할 수 ScriptMain 항목입니다.The Script component project can include items other than the default ScriptMain item. 클래스, 모듈, 코드 파일 및 폴더를 프로젝트에 추가할 수 있고, 항목 그룹을 구성하기 위해 폴더를 사용할 수 있습니다.You can add classes, modules, code files, and folders to the project, and you can use folders to organize groups of items.

추가하는 모든 항목은 패키지 내부에 지속됩니다.All the items that you add are persisted inside the package.

스크립트 구성 요소 프로젝트의 참조References in the Script Component Project

스크립트 태스크 프로젝트를 마우스 오른쪽 단추로 클릭 하 여 관리 되는 어셈블리에 대 한 참조를 추가할 수 있습니다 프로젝트 탐색기을 클릭 한 다음 참조 추가합니다.You can add references to managed assemblies by right-clicking the Script task project in Project Explorer, and then clicking Add Reference. 자세한 내용은 참조 스크립팅 솔루션에서 다른 어셈블리 참조합니다.For more information, see Referencing Other Assemblies in Scripting Solutions.

참고

VSTA IDE에서 프로젝트 참조를 볼 수 있습니다 클래스 뷰 또는 프로젝트 탐색기합니다.You can view project references in the VSTA IDE in Class View or in Project Explorer. 이들이 창 중 하나를 열면는 보기 메뉴.You open either of these windows from the View menu. 새 참조를 추가할 수는 프로젝트 메뉴에서 프로젝트 탐색기, 또는 클래스 뷰합니다.You can add a new reference from the Project menu, from Project Explorer, or from Class View.

스크립트 구성 요소에서 패키지와 상호 작용Interacting with the Package in the Script Component

스크립트 구성 요소에서 작성하는 사용자 지정 스크립트는 자동 생성된 기본 클래스의 강력한 형식의 접근자를 통해 포함하는 패키지에서 변수 및 연결 관리자를 액세스하고 사용할 수 있습니다.The custom script that you write in the Script component can access and use variables and connection managers from the containing package through strongly-typed accessors in the auto-generated base classes. 그러나 변수 및 연결 관리자를 스크립트에서 사용할 수 있게 만들려면 코드 디자인 모드로 들어가기 전에 이들을 구성해야 합니다.However, you must configure both variables and connection managers before entering code-design mode if you want to make them available to your script. 또한 스크립트 구성 요소 코드에서 이벤트를 발생시키고 로깅을 수행할 수 있습니다.You can also raise events and perform logging from your Script component code.

스크립트 구성 요소 프로젝트의 자동 생성된 프로젝트 항목은 다음과 같은 개체, 메서드 및 속성을 사용하여 패키지와 상호 작용합니다.The autogenerated project items in the Script component project provide the following objects, methods, and properties for interacting with the package.

패키지 기능Package Feature 액세스 방법Access Method
변수Variables 명명 된 인수와 형식화 된 접근자 속성을 사용 하 여는 변수 의 컬렉션 클래스는 ComponentWrapper 프로젝트 항목을 통해 노출 되는 변수 속성의는 ScriptMain 클래스입니다.Use the named and typed accessor properties in the Variables collection class in the ComponentWrapper project item, exposed through the Variables property of the ScriptMain class.

PreExecute 메서드는 읽기 전용 변수만 액세스할 수 있습니다.The PreExecute method can access only read-only variables. PostExecute 메서드 수 모두 읽기 전용 액세스 및 읽기/쓰기 변수입니다.The PostExecute method can access both read-only and read/write variables.
연결Connections 명명 된 인수와 형식화 된 접근자 속성을 사용 하 여는 연결 의 컬렉션 클래스는 ComponentWrapper 프로젝트 항목을 통해 노출 되는 연결 속성의는 ScriptMain 클래스입니다.Use the named and typed accessor properties in the Connections collection class in the ComponentWrapper project item, exposed through the Connections property of the ScriptMain class.
이벤트Events 사용 하 여 이벤트를 발생 시킬는 ComponentMetaData 속성은 ScriptMain 클래스 및 화재<X > 의 메서드는 IDTSComponentMetaData100 인터페이스입니다.Raise events by using the ComponentMetaData property of the ScriptMain class and the Fire<X> methods of the IDTSComponentMetaData100 interface.
로깅Logging 로깅을 사용 하 여 수행 된 Log 의 메서드는 ScriptMain 클래스입니다.Perform logging by using the Log method of the ScriptMain class.

스크립트 구성 요소 디버깅Debugging the Script Component

스크립트 구성 요소의 코드를 디버깅하려면 코드에 하나 이상의 중단점을 설정한 다음 VSTA IDE를 닫고 SQL Server Data Tools(SSDT)SQL Server Data Tools (SSDT)에서 패키지를 실행합니다.To debug the code in your Script component, set at least one breakpoint in the code, and then close the VSTA IDE to run the package in SQL Server Data Tools(SSDT)SQL Server Data Tools (SSDT). 패키지 실행 중 스크립트 구성 요소 실행이 시작되면 VSTA IDE가 다시 열리고 코드가 읽기 전용 모드에서 열립니다.When package execution enters the Script component, the VSTA IDE reopens and displays your code in read-only mode. 중단점에 도달한 후에는 변수 값을 검사하고 나머지 코드를 단계별로 실행할 수 있습니다.After execution reaches your breakpoint, you can examine variable values and step through the remaining code.

참고

스크립트 구성 요소를 패키지 실행 태스크에서 실행된 자식 패키지의 일부로 실행할 경우에는 스크립트 구성 요소를 디버깅할 수 없습니다.You cannot debug a Script component when you run the Script component as part of a child package that is run from an Execute Package task. 이러한 경우에는 자식 패키지에서 스크립트 구성 요소에 설정한 중단점이 무시됩니다.Breakpoints that you set in the Script component in the child package are disregarded in these circumstances. 자식 패키지는 별도로 실행하여 정상적으로 디버깅할 수 있습니다.You can debug the child package normally by running it separately.

참고

여러 스크립트 구성 요소가 포함되어 있는 패키지를 디버깅하는 경우 디버거는 한 개의 스크립트 구성 요소를 디버깅합니다.When you debug a package that contains multiple Script components, the debugger debugs one Script component. Foreach 루프 또는 For 루프 컨테이너의 경우와 같이 디버거가 완료되는 경우 시스템에서 다른 스크립트 구성 요소를 디버깅할 수 있습니다.The system can debug another Script component if the debugger completes, as in the case of a Foreach Loop or For Loop container.

다음 방법을 사용하여 스크립트 구성 요소의 실행을 모니터링할 수도 있습니다.You can also monitor the execution of the Script component by using the following methods:

  • 실행을 중단 하 고 모달 메시지를 사용 하 여 표시 된 MessageBox.Show 에서 메서드는 System.Windows.Forms 네임 스페이스입니다.Interrupt execution and display a modal message by using the MessageBox.Show method in the System.Windows.Forms namespace. (이 코드는 디버깅 프로세스를 완료한 후 제거하십시오.)(Remove this code after you complete the debugging process.)

  • 정보 메시지, 경고 및 오류에 대한 이벤트를 발생시킵니다.Raise events for informational messages, warnings, and errors. FireInformation, FireWarning, FireError 방법 Visual Studio에서 이벤트 설명을 표시 출력 창.The FireInformation, FireWarning, and FireError methods display the event description in the Visual Studio Output window. 그러나 FireProgress 메서드, Console.Write 메서드 및 Console.WriteLine 메서드 않습니다 어떠한 정보도 표시 하지에 출력 창.However, the FireProgress method, the Console.Write method, and Console.WriteLine method do not display any information in the Output window. FireProgress 이벤트에서 메시지에 표시 된 진행률SSISSSIS 디자이너입니다.Messages from the FireProgress event appear on the Progress tab of SSISSSIS Designer. 자세한 내용은 참조 스크립트 구성 요소에서 이벤트를 발생 시키는합니다.For more information, see Raising Events in the Script Component.

  • 이벤트 또는 사용자 정의 메시지를 활성화된 로깅 공급자에 기록합니다.Log events or user-defined messages to enabled logging providers. 자세한 내용은 참조 스크립트 구성 요소에서 로깅합니다.For more information, see Logging in the Script Component.

    대상으로 데이터를 저장 하지 않고 원본 또는 변환으로 구성 된 스크립트 구성 요소의 출력을 검사 하려는 경우에 포함 된 데이터 흐름을 중지할 수 있습니다는 행 개수 변환 및 스크립트 구성 요소의 출력에 데이터 뷰어를 연결 합니다.If you just want to examine the output of a Script component configured as a source or as a transformation, without saving the data to a destination, you can stop the data flow with a Row Count Transformation and attach a data viewer to the output of the Script component. 데이터 뷰어에 대 한 정보를 참조 하십시오. Debugging Data Flow합니다.For information about data viewers, see Debugging Data Flow.

섹션 내용In This Section

스크립트 구성 요소 코딩에 대한 자세한 내용은 이 섹션의 다음 항목을 참조하십시오.For more information about coding the Script component, see the following topics in this section.

스크립트 구성 요소 개체 모델 이해Understanding the Script Component Object Model
스크립트 구성 요소에 제공되는 개체, 메서드 및 속성을 사용하는 방법을 설명합니다.Explains how to use the objects, methods, and properties available in the Script component.

스크립팅 솔루션에서 다른 어셈블리 참조Referencing Other Assemblies in Scripting Solutions
스크립트 구성 요소의 .NET Framework.NET Framework 클래스 라이브러리에서 개체를 참조하는 방법을 설명합니다.Explains how to reference objects from the .NET Framework.NET Framework class library in the Script component.

스크립트 구성 요소에 대 한 오류 출력 시뮬레이션Simulating an Error Output for the Script Component
스크립트 구성 요소에서 처리 중 오류가 발생하는 행의 오류 출력을 시뮬레이션하는 방법을 설명합니다.Explains how to simulate an error output for rows that raise errors during processing by the Script component.

외부 리소스External Resources

관련 항목:See Also

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