다음을 통해 공유


데이터 흐름 구성 요소의 디자인 타임 메서드

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

실행하기 전에 데이터 흐름 태스크는 증분 변경을 거치기 때문에 디자인 타임 상태라고 합니다. 변경 내용에는 구성 요소 추가 또는 제거, 구성 요소를 연결하는 경로 개체의 추가 또는 제거, 구성 요소의 메타데이터 변경 등이 포함될 수 있습니다. 메타데이터 변경이 발생하면 구성 요소는 변경 내용을 모니터링하고 대응할 수 있습니다. 예를 들어 구성 요소는 특정 변경 내용을 허용하지 않거나 변경에 대한 응답으로 추가 변경을 수행할 수 있습니다. 디자인 타임에 디자이너는 디자인 타임 IDTSDesigntimeComponent100 인터페이스를 통해 구성 요소와 상호 작용합니다.

디자인 타임 구현

구성 요소의 디자인 타임 인터페이스는 인터페이스에 IDTSDesigntimeComponent100 의해 설명됩니다. 이 인터페이스를 명시적으로 구현하지는 않지만 이 인터페이스에 정의된 메서드를 잘 알고 있으면 구성 요소의 디자인 타임 인스턴스에 해당하는 PipelineComponent 기본 클래스의 메서드를 쉽게 이해할 수 있습니다.

구성 요소가 SSDT(SQL Server Data Tools)에 로드되면 구성 요소의 디자인 타임 인스턴스가 인스턴스화되고 구성 요소가 편집될 때 인터페이스의 IDTSDesigntimeComponent100 메서드가 호출됩니다. 기본 클래스의 구현을 사용하여 구성 요소에서 필요한 메서드만 재정의할 수 있습니다. 대부분의 경우 구성 요소에 대한 부적절한 편집을 방지하기 위해 이러한 메서드를 재정의할 수 있습니다. 예를 들어 사용자가 구성 요소에 출력을 추가할 수 없도록 하려면 InsertOutput 메서드를 재정의합니다. 그렇지 않으면 기본 클래스에 의해 이 메서드의 구현이 호출되면 구성 요소에 출력을 추가합니다.

구성 요소의 목적 또는 기능에 관계없이 ProvideComponentProperties, ValidateReinitializeMetaData 메서드를 재정의해야 합니다. 자세한 Validate ReinitializeMetaData내용은 데이터 흐름 구성 요소 유효성 검사를 참조 하세요.

ProvideComponentProperties 메서드

구성 요소의 초기화는 메서드에서 ProvideComponentProperties 발생합니다. 이 메서드는 구성 요소가 데이터 흐름 태스크에 추가되고 클래스 생성자와 유사할 때 SSIS 디자이너에서 호출됩니다. 구성 요소 개발자는 이 메서드가 호출될 때 구성 요소의 입력, 출력 및 사용자 지정 속성을 만들고 초기화해야 합니다. 이 메서드는 ProvideComponentProperties 구성 요소의 디자인 타임 인스턴스 또는 런타임 인스턴스가 인스턴스화될 때마다 호출되지 않으므로 생성자와 다릅니다.

메서드의 기본 클래스 구현 구성 요소에 입력 및 출력을 추가 하 고 속성에 입력의 ID를 할당 합니다 SynchronousInputID . 그러나 SQL Server에서 기본 클래스에 의해 추가된 입력 및 출력 개체의 이름은 지정되지 않습니다. 패키지의 구성 요소에 Name 속성이 설정되지 않은 입력 또는 출력 개체가 있는 경우 해당 패키지는 성공적으로 로드되지 않습니다. 따라서 기본 구현을 사용하는 경우 기본 입력 및 출력의 Name 속성에 값을 명시적으로 할당해야 합니다.

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  

사용자 지정 속성 만들기

구성 요소 개발자는 ProvideComponentProperties 메서드가 호출될 때 구성 요소에 사용자 지정 속성(IDTSCustomProperty100)을 추가해야 합니다. 사용자 지정 속성에는 데이터 형식 속성이 없습니다. 사용자 지정 속성의 데이터 형식은 해당 속성에 할당하는 값의 데이터 형식에 Value 의해 설정됩니다. 그러나 사용자 지정 속성에 초기 값을 할당한 후에는 데이터 형식이 다른 값을 할당할 수 없습니다.

참고 항목

IDTSCustomProperty100 인터페이스는 개체 형식의 속성 값을 제한적으로 지원합니다. 사용자 지정 속성의 값으로 저장할 수 있는 유일한 개체는 문자열 또는 정수와 같은 단순 형식의 배열입니다.

다음 예제와 같이 해당 속성의 ExpressionType 값을 열거형에서 DTSCustomPropertyExpressionType CPET_NOTIFY 설정하여 사용자 지정 속성이 속성 식을 지원함을 나타낼 수 있습니다. 사용자가 입력한 속성 식을 처리하거나 유효성을 검사하기 위한 코드를 추가할 필요는 없습니다. 속성의 기본값을 설정하고, 해당 값의 유효성을 검사하고, 해당 값을 정상적으로 읽고 사용할 수 있습니다.

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

MyValidValues라는 공용 열거형을 정의한 것으로 가정하는 다음 예제와 같이 속성을 사용하여 TypeConverter 열거형에서 사용자 지정 속성 값을 선택하도록 사용자를 제한할 수 있습니다.

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의 "일반화된 형식 변환" 및 "방법: 형식 변환기 구현"을 참조하세요.

다음 예제와 같이 속성을 사용하여 UITypeEditor 사용자 지정 속성 값에 대한 사용자 지정 편집기 대화 상자를 지정할 수 있습니다. 요구 사항에 맞는 기존 UI 형식 편집기 클래스를 찾을 수 없는 경우 먼저 System.Drawing.Design.UITypeEditor에서 상속하는 사용자 지정 형식 편집기를 만들어야 합니다.

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

다음으로 이 클래스를 사용자 지정 속성의 UITypeEditor 속성 값으로 지정합니다.

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  

자세한 내용은 MSDN 라이브러리의 "UI 형식 편집기 구현"을 참조하세요.

참고 항목

데이터 흐름 구성 요소의 런타임 메서드