Taal
Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
SSIS Integration Runtime in Azure Data Factory
Voor de uitvoering wordt gezegd dat de datastroomtaak zich in een ontwerptijdstoestand bevindt, terwijl deze incrementele aanpassingen ondergaat. Wijzigingen kunnen het toevoegen of verwijderen van componenten omvatten, het toevoegen of verwijderen van padobjecten die componenten verbinden, en wijzigingen in de metadata van de componenten. Wanneer metadatawijzigingen plaatsvinden, kan de component de wijzigingen monitoren en erop reageren. Een component kan bijvoorbeeld bepaalde wijzigingen niet toestaan of extra wijzigingen aanbrengen als reactie op een wijziging. Tijdens het ontwerpen werkt de ontwerper met een component via de ontwerptijdinterface IDTSDesigntimeComponent100 .
Design-Time Implementatie
De ontwerptijdinterface van een component wordt beschreven door de IDTSDesigntimeComponent100 interface. Hoewel je deze interface niet expliciet implementeert, helpt bekendheid met de in deze interface gedefinieerde methoden je te begrijpen welke methoden van de PipelineComponent basisklasse overeenkomen met de ontwerptijd-instantie van een component.
Wanneer een component wordt geladen in de SQL Server Data Tools (SSDT), wordt de ontwerptijd-instantie van de component geïnstantieerd en worden de methoden van de IDTSDesigntimeComponent100 interface aangeroepen terwijl de component wordt bewerkt. De implementatie van de basisklasse laat je alleen die methoden overschrijven die je component vereist. In veel gevallen kunt u deze methoden overrulen om ongepaste bewerkingen aan een component te voorkomen. Om bijvoorbeeld te voorkomen dat gebruikers een uitvoer aan een component toevoegen, overrul je de InsertOutput methode. Anders, wanneer de implementatie van deze methode door de basisklasse wordt aangeroepen, voegt deze een output toe aan de component.
Ongeacht het doel of de functionaliteit van je component, je moet de ProvideComponentProperties, Validate, en ReinitializeMetaData methoden overschrijven. Voor meer informatie over Validate en ReinitializeMetaDatazie Validating a Gegevensstroom Component.
LeverComponentProperties-methode
De initialisatie van een component vindt plaats in de ProvideComponentProperties methode. Deze methode wordt door SSIS Designer aangeroepen wanneer een component wordt toegevoegd aan de dataflowtaak, en lijkt op een class constructor. Componentontwikkelaars moeten hun invoer, uitvoer en aangepaste eigenschappen aanmaken en initialiseren tijdens deze methode-aanroep. De ProvideComponentProperties methode verschilt van een constructor omdat deze niet elke keer wordt aangeroepen wanneer de ontwerptijd-instantie of run-time instantie van de component wordt geïnstantieerd.
De basisklasse-implementatie van de methode voegt een invoer en een uitvoer toe aan de component en wijst de ID van de invoer toe aan de SynchronousInputID eigenschap. In SQL Server worden de invoer- en uitvoerobjecten die door de basisklasse worden toegevoegd echter niet benoemd. Pakketten die een component bevatten met invoer- of uitvoerobjecten waarvan de Name-eigenschap niet is ingesteld, zullen niet succesvol laden. Daarom moet je, wanneer je de basisimplementatie gebruikt, expliciet waarden toewijzen aan de Naam-eigenschap van de standaard invoer en uitvoer.
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
Aangepaste eigenschappen maken
De aanroep van de ProvideComponentProperties methode is waar componentontwikkelaars aangepaste eigenschappen (IDTSCustomProperty100) aan de component moeten toevoegen. Aangepaste eigenschappen hebben geen eigenschap voor datatype. Het datatype van een aangepaste eigenschap wordt bepaald door het datatype van de waarde die je aan de Value eigenschap toekent. Maar nadat je een beginwaarde aan de aangepaste eigenschap hebt toegewezen, kun je geen waarde met een ander datatype toewijzen.
Note
De IDTSCustomProperty100 interface heeft beperkte ondersteuning voor eigenschapswaarden van het type Object. Het enige object dat je als waarde van een aangepaste eigenschap kunt opslaan, is een array van eenvoudige types zoals strings of gehele getallen.
Je kunt aangeven dat je aangepaste eigenschap eigenschappenexpressies ondersteunt door de waarde van de ExpressionType eigenschap te zetten op CPET_NOTIFY uit de DTSCustomPropertyExpressionType enumeratie, zoals in het volgende voorbeeld wordt getoond. Je hoeft geen code toe te voegen om de door de gebruiker ingevoerde eigenschapsexpressie te verwerken of te valideren. Je kunt een standaardwaarde voor de eigenschap instellen, de waarde valideren en de waarde normaal lezen en gebruiken.
IDTSCustomProperty100 myCustomProperty;
...
myCustomProperty.ExpressionType = DTSCustomPropertyExpressionType.CPET_NOTIFY;
Dim myCustomProperty As IDTSCustomProperty100
...
myCustomProperty.ExpressionType = DTSCustomPropertyExpressionType.CPET_NOTIFY
Je kunt gebruikers beperken tot het selecteren van een aangepaste eigenschapswaarde uit een enumeratie door de TypeConverter eigenschap te gebruiken, zoals in het volgende voorbeeld te zien is, wat ervan uitgaat dat je een publieke enumeratie genaamd MyValidValues hebt gedefinieerd.
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
Voor meer informatie, zie "Generalized Type Conversion" en "Implementing a Type Converter" in de MSDN-bibliotheek.
Je kunt een aangepaste editor-dialoogvenster opgeven voor de waarde van je aangepaste eigenschap door de UITypeEditor eigenschap te gebruiken, zoals in het volgende voorbeeld wordt getoond. Eerst moet je een aangepaste type-editor maken die overneemt van System.Drawing.Design.UITypeEditor, als je geen bestaande UI-type-editor-klasse kunt vinden die aan je behoeften voldoet.
public class MyCustomTypeEditor : UITypeEditor
{
...
}
Public Class MyCustomTypeEditor
Inherits UITypeEditor
...
End Class
Specificeer vervolgens deze klasse als de waarde van de UITypeEditor eigenschap van je aangepaste eigendom.
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
Voor meer informatie, zie "Implementing a UI Type Editor" in de MSDN-bibliotheek.