데이터 흐름 구성 요소의 디자인 타임 메서드Design-time Methods of a Data Flow Component

실행 전 데이터 흐름 태스크에서 증분 변경 작업이 수행될 때 해당 데이터 흐름 태스크는 디자인 타임 상태에 있다고 합니다.Before execution, the data flow task is said to be in a design-time state, as it undergoes incremental changes. 변경 작업에는 구성 요소의 추가 또는 제거, 구성 요소를 연결하는 경로 개체의 추가 또는 제거, 구성 요소의 메타데이터 변경 등이 포함됩니다.Changes may include the addition or removal of components, the addition or removal of the path objects that connect components, and changes to the metadata of the components. 메타데이터가 변경되면 구성 요소에서는 변경 내용을 모니터링하고 그에 따라 반응할 수 있습니다.When metadata changes occur, the component can monitor and react to the changes. 예를 들어 변경에 대한 응답으로 구성 요소에서는 특정 변경 작업을 허용하지 않거나 추가 변경 작업을 수행할 수 있습니다.For example, a component can disallow certain changes or make additional changes in response to a change. 디자인 타임에 디자이너는 디자인 타임 IDTSDesigntimeComponent100 인터페이스를 통해 구성 요소와 상호 작용합니다.At design time, the designer interacts with a component through the design-time IDTSDesigntimeComponent100 interface.

디자인 타임 구현Design-Time Implementation

구성 요소의 디자인 타임 인터페이스는 IDTSDesigntimeComponent100 인터페이스에 의해 기술됩니다.The design-time interface of a component is described by the IDTSDesigntimeComponent100 interface. 이 인터페이스를 명시적으로 구현하지는 않지만 이 인터페이스에 정의된 메서드를 잘 알고 있으면 구성 요소의 디자인 타임 인스턴스에 해당하는 PipelineComponent 기본 클래스의 메서드를 쉽게 이해할 수 있습니다.Although you do not explicitly implement this interface, a familiarity with the methods defined in this interface will help you understand which methods of the PipelineComponent base class correspond to the design-time instance of a component.

구성 요소를 SQL Server Data Tools(SSDT)SQL Server Data Tools (SSDT)에 로드하면 구성 요소의 디자인 타임 인스턴스가 인스턴스화되고 구성 요소를 편집할 때 IDTSDesigntimeComponent100 인터페이스의 메서드가 호출됩니다.When a component is loaded in the SQL Server Data Tools(SSDT)SQL Server Data Tools (SSDT), the design-time instance of the component is instantiated and the methods of the IDTSDesigntimeComponent100 interface are called as the component is edited. 기본 클래스의 구현을 사용하여 구성 요소에서 필요한 메서드만 재정의할 수 있습니다.The implementation of the base class lets you override only those methods that your component requires. 대부분의 경우 이러한 메서드를 재정의하여 구성 요소가 적절하지 않게 편집되는 것을 방지할 수 있습니다.In many cases, you may override these methods to prevent inappropriate edits to a component. 예를 들어 사용자가 구성 요소에 출력을 추가할 수 없도록 하려면 InsertOutput 메서드를 재정의합니다.For example, to prevent users from adding an output to a component, override the InsertOutput method. 이 메서드를 재정의하지 않고 기본 클래스에 구현된 메서드를 호출하면 구성 요소에 출력이 추가됩니다.Otherwise, when the implementation of this method by the base class is called, it adds an output to the component.

구성 요소의 목적 또는 기능에 관계없이 ProvideComponentProperties, ValidateReinitializeMetaData 메서드를 재정의해야 합니다.Regardless of the purpose or functionality of your component, you should override the ProvideComponentProperties, Validate, and ReinitializeMetaData methods. 에 대 한 자세한 내용은 ValidateReinitializeMetaData, 참조 유효성을 검사 하는 데이터 흐름 구성 요소합니다.For more information about Validate and ReinitializeMetaData, see Validating a Data Flow Component.

ProvideComponentProperties 메서드ProvideComponentProperties Method

구성 요소는 ProvideComponentProperties 메서드에서 초기화됩니다.The initialization of a component occurs in the ProvideComponentProperties method. 이 메서드는 클래스 생성자와 비슷하며 데이터 흐름 태스크에 구성 요소를 추가하면 SSISSSIS 디자이너에서 이 메서드가 호출됩니다.This method is called by SSISSSIS Designer when a component is added to the data flow task, and is similar to a class constructor. 구성 요소 개발자는 이 메서드가 호출될 때 구성 요소의 입력, 출력 및 사용자 지정 속성을 만들고 초기화해야 합니다.Component developers should create and initialize their inputs, outputs, and custom properties during this method call. ProvideComponentProperties 메서드가 생성자와 다른 점은 구성 요소의 디자인 타임 인스턴스나 런타임 인스턴스가 인스턴스화될 때마다 호출되지는 않는다는 점입니다.The ProvideComponentProperties method differs from a constructor because it is not called every time that the design-time instance or run-time instance of the component is instantiated.

이 메서드의 기본 클래스 구현에서는 구성 요소에 입력 및 출력을 추가하고 SynchronousInputID 속성에 입력의 ID를 할당합니다.The base class implementation of the method adds an input and an output to the component and assigns the ID of the input to the SynchronousInputID property. 그러나 SQL ServerSQL Server에서 기본 클래스에 의해 추가된 입력 및 출력 개체에는 이름이 지정되지 않습니다.However, in SQL ServerSQL Server, the input and output objects added by the base class are not named. 입력이 포함 된 구성 요소를 포함 하는 패키지 또는 출력 개체 인 Name 속성이 설정 되어 있지 성공적으로 로드 되지 않습니다.Packages that contain a component with input or output objects whose Name property is not set will not successfully load. 따라서 기본 구현을 사용 하는 경우 값을 할당 해야 명시적으로 기본 입력 및 출력의 Name 속성에 있습니다.Therefore, when you use the base implementation, you must assign values explicitly to the Name property of the default input and output.

public override void ProvideComponentProperties()  
{  
    /// TODO: Reset the component.  
    /// TODO: Add custom properties.  
    /// TODO: Add input objects.  
    /// TODO: Add output objects.  
}  
Public Overrides Sub ProvideComponentProperties()  
    ' TODO: Reset the component.  
    ' TODO: Add custom properties.  
    ' TODO: Add input objects.  
    ' TODO: Add output objects.  
End Sub  

사용자 지정 속성 만들기Creating Custom Properties

구성 요소 개발자는 ProvideComponentProperties 메서드가 호출될 때 구성 요소에 사용자 지정 속성(IDTSCustomProperty100)을 추가해야 합니다.The call to the ProvideComponentProperties method is where component developers should add custom properties (IDTSCustomProperty100) to the component. 사용자 지정 속성에는 데이터 형식 속성이 없습니다.Custom properties do not have a data type property. 사용자 지정 속성의 데이터 형식은 Value 속성에 할당한 값의 데이터 형식에 따라 설정됩니다.The data type of a custom property is set by the data type of the value that you assign to its Value property. 그러나 사용자 지정 속성에 초기 값을 할당한 후에는 데이터 형식이 다른 값을 할당할 수 없습니다.However, after you have assigned an initial value to the custom property, you cannot assign a value with a different data type.

참고

IDTSCustomProperty100 인터페이스 형식의 속성 값에 대 한 지원이 제한 개체합니다.The IDTSCustomProperty100 interface has limited support for property values of type Object. 사용자 지정 속성의 값으로는 문자열 또는 정수와 같은 단순 형식의 배열만 저장할 수 있습니다.The only object that you can store as the value of a custom property is an array of simple types such as strings or integers.

사용자 지정 속성의 값을 설정 하 여 속성 식의 지원 하도록 지정할 수는 ExpressionType 속성을 CPET_NOTIFY 에서 DTSCustomPropertyExpressionType 다음 예제 에서처럼 열거형입니다.You can indicate that your custom property supports property expressions by setting the value of its ExpressionType property to CPET_NOTIFY from the DTSCustomPropertyExpressionType enumeration, as shown in the following example. 사용자가 입력한 속성 식을 처리하거나 유효성을 검사하기 위한 코드를 추가할 필요는 없습니다.You do not have to add any code to handle or to validate the property expression entered by the user. 속성의 기본값을 설정하고 해당 값의 유효성을 검사한 다음 값을 정상적으로 읽고 사용할 수 있습니다.You can set a default value for the property, validate its value, and read and use its value normally.

IDTSCustomProperty100 myCustomProperty;  
...  
myCustomProperty.ExpressionType = DTSCustomPropertyExpressionType.CPET_NOTIFY;  
Dim myCustomProperty As IDTSCustomProperty100  
...  
myCustomProperty.ExpressionType = DTSCustomPropertyExpressionType.CPET_NOTIFY  

열거형에서 사용 하 여 사용자 지정 속성 값을 선택 하려면 사용자가 제한할 수 있습니다는 TypeConverter 속성을 라는 공용 열거형을 정의 했다고 가정 하는 다음 예에서 같이 MyValidValues합니다.You can limit users to selecting a custom property value from an enumeration by using the TypeConverter property, as shown in the following example, which assumes that you have defined a public enumeration named MyValidValues.

IDTSCustomProperty100 customProperty = outputColumn.CustomPropertyCollection.New();  
customProperty.Name = "My Custom Property";  
// This line associates the type with the custom property.  
customProperty.TypeConverter = typeof(MyValidValues).AssemblyQualifiedName;  
// Now you can use the enumeration values directly.  
customProperty.Value = MyValidValues.ValueOne;    
Dim customProperty As IDTSCustomProperty100 = outputColumn.CustomPropertyCollection.New   
customProperty.Name = "My Custom Property"   
' This line associates the type with the custom property.  
customProperty.TypeConverter = GetType(MyValidValues).AssemblyQualifiedName   
' Now you can use the enumeration values directly.  
customProperty.Value = MyValidValues.ValueOne  

자세한 내용은 "일반화 된 형식 변환" 및 "형식 변환기 구현"의 참조는 MSDN Library합니다.For more information, see "Generalized Type Conversion" and "Implementing a Type Converter" in the MSDN Library.

다음 예와 같이 UITypeEditor 속성을 사용하여 사용자 지정 속성의 값에 사용자 지정 편집기 대화 상자를 지정할 수 있습니다.You can specify a custom editor dialog box for the value of your custom property by using the UITypeEditor property, as shown in the following example. 먼저 만들어야 사용자 지정 형식에서 상속 되는 편집기 System.Drawing.Design.UITypeEditor, 필요에 맞는 기존 UI 형식 편집기 클래스를 찾을 수 없습니다.First, you must create a custom type editor that inherits from System.Drawing.Design.UITypeEditor, if you cannot locate an existing UI type editor class that fits your needs.

public class MyCustomTypeEditor : UITypeEditor  
{  
...  
}  
Public Class MyCustomTypeEditor  
  Inherits UITypeEditor   
  ...  
End Class  

그런 다음 이 클래스를 사용자 지정 속성의 UITypeEditor 속성 값으로 지정합니다.Next, specify this class as the value of the UITypeEditor property of your custom property.

IDTSCustomProperty100 customProperty = outputColumn.CustomPropertyCollection.New();  
customProperty.Name = "My Custom Property";  
// This line associates the editor with the custom property.  
customProperty.UITypeEditor = typeof(MyCustomTypeEditor).AssemblyQualifiedName;  
Dim customProperty As IDTSCustomProperty100 = outputColumn.CustomPropertyCollection.New   
customProperty.Name = "My Custom Property"   
' This line associates the editor with the custom property.  
customProperty.UITypeEditor = GetType(MyCustomTypeEditor).AssemblyQualifiedName  

"형식 UI 편집기 구현"에 대 한 자세한 내용은 참조는 MSDN Library합니다.For more information, see "Implementing a UI Type Editor" in the MSDN Library.

관련 항목:See Also

데이터 흐름 구성 요소의 런타임 메서드Run-time Methods of a Data Flow Component