Freigeben über


Entwurfszeitmethoden einer Datenflusskomponente

Gilt für: SQL Server SSIS Integration Runtime in Azure Data Factory

Vor der Ausführung befindet sich der Datenflusstask im so genannten Entwurfszeitstatus, während er inkrementelle Änderungen durchläuft. Zu den Änderungen kann das Hinzufügen oder Entfernen von Komponenten, das Hinzufügen oder Entfernen von Pfadobjekten zur Verbindung von Komponenten sowie Änderungen an den Metadaten der Komponenten gehören. Wenn Metadaten-Änderungen auftreten, kann die Komponente die Änderungen überwachen und darauf reagieren. Zum Beispiel kann eine Komponente bestimmte Änderungen nicht zulassen oder zusätzliche Änderungen als Reaktion auf eine Änderung vornehmen. Zur Entwurfszeit interagiert der Designer mit einer Komponente durch die Entwurfszeitschnittstelle IDTSDesigntimeComponent100.

Entwurfszeitimplementierung

Die Entwurfszeitschnittstelle einer Komponente wird von der IDTSDesigntimeComponent100-Schnittstelle beschrieben. Auch wenn Sie diese Schnittstelle nicht explizit implementieren, sollten Sie die in der Schnittstelle definierten Methoden kennen, um zu verstehen, welche Methoden der PipelineComponent-Basisklasse den Entwurfszeitinstanzen einer Komponente entsprechen.

Wenn eine Komponente in SQL Server Data Tools (SSDT) geladen wird, wird die Entwurfszeitinstanz der Komponente instanziiert und die Methoden der IDTSDesigntimeComponent100-Schnittstelle beim Bearbeiten der Komponente aufgerufen. Die Implementierung der Basisklasse lässt Sie nur die Methoden, die die Komponente erfordert, überschreiben. In vielen Fällen überschreiben Sie diese Methoden um zu verhindern, dass an einer Komponente unerwünschte Bearbeitungen vorgenommen werden. Um beispielsweise Benutzer zu hindern, eine Ausgabe zu einer Komponente hinzuzufügen, überschreiben Sie die InsertOutput-Methode. Andernfalls wird beim Aufrufen der Implementierung dieser Methode durch die Basisklasse eine Ausgabe zur Komponente hinzugefügt

Unabhängig vom Zweck oder der Funktion Ihrer Komponente sollten Sie die Methoden ProvideComponentProperties, Validate und ReinitializeMetaData überschreiben. Weitere Informationen zu Validate und ReinitializeMetaData finden Sie unter Überprüfen einer Datenflusskomponente.

ProvideComponentProperties-Methode

Die Initialisierung einer Komponente erfolgt in der ProvideComponentProperties-Methode. Diese Methode wird vom SSIS-Designer aufgerufen, wenn eine Komponente zum Datenflusstask hinzugefügt wird, und ist ähnlich wie ein Klassenkonstruktor. Komponentenentwickler sollten ihre Eingaben, Ausgaben und benutzerdefinierten Eigenschaften während dieses Methodenaufrufs initialisieren und erstellen. Die ProvideComponentProperties-Methode unterscheidet sich von einem Konstruktor, da sie nicht jedes Mal aufgerufen wird, wenn die Entwurfszeitinstanz oder Laufzeitinstanz der Komponenten instanziiert wird.

Die Basisklassenimplementierung der Methode fügt eine Eingabe und eine Ausgabe zur Komponente hinzu und weist die ID der Eingabe der Eigenschaft SynchronousInputID zu. In SQL Server werden jedoch die Eingabe- und Ausgabeobjekte, die von der Basisklasse hinzugefügt werden, nicht benannt. Pakete, die eine Komponente mit Eingabe- oder Ausgabeobjekten enthalten, deren Name-Eigenschaft nicht festgelegt ist, werden nicht erfolgreich geladen. Bei Verwendung der Basisimplementierung müssen Sie also der Name-Eigenschaft der Standardeingabe und -ausgabe explizit Werte zuweisen.

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  

Erstellen von benutzerdefinierten Eigenschaften

Komponentenentwickler können beim Aufrufen der ProvideComponentProperties-Methode der Komponente benutzerdefinierte Eigenschaften (IDTSCustomProperty100) hinzufügen. Benutzerdefinierte Eigenschaften verfügen nicht über eine Datentypeigenschaft. Der Datentyp einer benutzerdefinierten Eigenschaft wird durch den Datentyp des Werts bestimmt, den Sie der Value-Eigenschaft zuweisen. Nachdem Sie der benutzerdefinierten Eigenschaft jedoch einen Anfangswert zugeordnet haben, können Sie keinen Wert mit einem anderen Datentyp zuweisen.

Hinweis

Die IDTSCustomProperty100-Schnittstelle bietet eingeschränkte Unterstützung für Eigenschaftenwerte des Typs Object. Das einzige Objekt, das Sie als Wert einer benutzerdefinierten Eigenschaft zuordnen können, ist ein Array einfacher Typen wie Zeichenfolgen oder Ganzzahlen.

Sie können festlegen, dass die benutzerdefinierte Eigenschaft Eigenschaftsausdrücke unterstützt, indem Sie den Wert der ExpressionType-Eigenschaft auf CPET_NOTIFY aus der DTSCustomPropertyExpressionType-Enumeration einstellen, wie im folgenden Beispiel gezeigt. Sie müssen keinen Code hinzufügen, um den vom Benutzer eingegebenen Eigenschaftsausdruck zu verarbeiten oder zu überprüfen. Sie können einen Standardwert für die Eigenschaft festlegen, den Wert überprüfen und den Wert normal lesen und verwenden.

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

Sie können festlegen, dass Benutzer einen benutzerdefinierten Eigenschaftswert aus einer Enumeration auswählen können, indem Sie die TypeConverter-Eigenschaft verwenden, wie im folgenden Beispiel gezeigt. Dabei gilt die Annahme, dass Sie eine öffentliche Enumeration namens MyValidValues definiert haben.

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  

Weitere Informationen finden Sie unter „Verallgemeinerte Typkonvertierung“ und „Implementieren eines Typkonverters“ in der MSDN Library.

Sie können ein benutzerdefiniertes Bearbeitungsdialogfeld für den Wert der benutzerdefinierten Eigenschaft angeben, indem Sie die UITypeEditor-Eigenschaft wie im folgenden Beispiel gezeigt verwenden. Erstellen Sie zuerst einen benutzerdefinierten Typeditor, der von System.Drawing.Design.UITypeEditor erbt, falls Sie keine geeignete vorhandene Typ-Editorklasse für die Benutzeroberfläche finden.

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

Geben Sie danach diese Klasse als Wert der UITypeEditor-Eigenschaft der benutzerdefinierten Eigenschaft an.

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  

Weitere Informationen finden Sie unter „Implementieren eines Typ-Editors für die Benutzeroberfläche“ in der MSDN Library.

Weitere Informationen

Laufzeitmethoden einer Datenflusskomponente