Creazione di un componente flusso di dati personalizzatoCreating a Custom Data Flow Component

In MicrosoftMicrosoft SQL ServerSQL Server Integration ServicesIntegration Services, attività flusso di dati espone un modello a oggetti che consente agli sviluppatori di creare componenti del flusso di dati personalizzati, ovvero origini, trasformazioni e destinazioni, tramite il MicrosoftMicrosoft .NET Framework.NET Framework e codice gestito.In MicrosoftMicrosoft SQL ServerSQL Server Integration ServicesIntegration Services, the data flow task exposes an object model that lets developers create custom data flow components—sources, transformations, and destinations—by using the MicrosoftMicrosoft .NET Framework.NET Framework and managed code.

Un'attività Flusso di dati è costituita da componenti che contengono un'interfaccia IDTSComponentMetaData100 e una raccolta di oggetti IDTSPath100 che definiscono lo spostamento di dati tra componenti.A data flow task consists of components that contain an IDTSComponentMetaData100 interface and a collection of IDTSPath100 objects that define the movement of data between components.

Nota

Quando si crea un provider personalizzato, è necessario aggiornare il file ProviderDescriptors.xml con i valori delle colonne di metadati.When you create a custom provider, you need to update the ProviderDescriptors.xml file with the metadata column values.

Fase di progettazione e di esecuzioneDesign Time and Run Time

Prima dell'esecuzione, l'attività Flusso di dati si trova nel cosiddetto stato della fase di progettazione, quando viene sottoposta a modifiche incrementali.Before execution, the data flow task is said to be in a design-time state, as it undergoes incremental changes. Tali modifiche possono includere l'aggiunta o la rimozione di componenti, l'aggiunta o la rimozione degli oggetti percorso che connettono i componenti e modifiche ai metadati dei componenti.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. Quando si verificano modifiche ai metadati, il componente può monitorarle e rispondere.When metadata changes occur, the component can monitor and react to the changes. Ad esempio, un componente può impedire determinate modifiche o aggiungerne altre in risposta a una modifica.For example, a component can disallow certain changes or to make additional changes in response to a change. In fase di progettazione la finestra di progettazione interagisce con un componente tramite l'interfaccia IDTSDesigntimeComponent100 della fase di progettazione.At design time, the designer interacts with a component through the design-time IDTSDesigntimeComponent100 interface.

In fase di esecuzione l'attività Flusso di dati esamina la sequenza di componenti, prepara un piano di esecuzione e gestisce un pool di thread di lavoro che eseguono il piano di lavoro.At execution time, the data flow task examines the sequence of components, prepares an execution plan, and manages a pool of worker threads that execute the work plan. Anche se ogni thread di lavoro esegue alcune operazioni interne all'attività Flusso di dati, la principale attività di questo thread è chiamare i metodi del componente tramite l'interfaccia IDTSRuntimeComponent100 di runtime.Although each worker thread performs some work that is internal to the data flow task, the principal task of the worker thread is to call the methods of the component through the run-time IDTSRuntimeComponent100 interface.

Creazione di un componenteCreating a Component

Per creare un componente flusso di dati, derivare una classe dalla classe di base PipelineComponent, applicare la classe DtsPipelineComponentAttribute, quindi eseguire l'override dei metodi appropriati della classe di base.To create a data flow component, you derive a class from the PipelineComponent base class, apply the DtsPipelineComponentAttribute class, and then override the appropriate methods of the base class. L'oggetto PipelineComponent implementa le interfacce IDTSDesigntimeComponent100 e IDTSRuntimeComponent100 ed espone i relativi metodi da sottoporre a override nel componente.The PipelineComponent implements the IDTSDesigntimeComponent100 and IDTSRuntimeComponent100 interfaces, and exposes their methods for you to override in your component.

A seconda degli oggetti utilizzati dal componente, il progetto richiederà riferimenti ad alcuni o a tutti gli assembly seguenti:Depending on the objects used by your component, your project will require references to some or all of the following assemblies:

FunzionalitàFeature Assembly a cui fare riferimentoAssembly to reference Spazio dei nomi da importareNamespace to import
Flusso di datiData flow Microsoft.SqlServer.PipelineHostMicrosoft.SqlServer.PipelineHost Microsoft.SqlServer.Dts.Pipeline
Wrapper del flusso di datiData flow wrapper Microsoft.SqlServer.DTSPipelineWrapMicrosoft.SqlServer.DTSPipelineWrap Microsoft.SqlServer.Dts.Pipeline.Wrapper
RuntimeRuntime Microsoft.SQLServer.ManagedDTSMicrosoft.SQLServer.ManagedDTS Microsoft.SqlServer.Dts.Runtime
Wrapper del runtimeRuntime wrapper Microsoft.SqlServer.DTSRuntimeWrapMicrosoft.SqlServer.DTSRuntimeWrap Microsoft.SqlServer.Dts.Runtime.Wrapper

Nell'esempio di codice seguente è illustrato un componente semplice che deriva dalla classe di base e applica DtsPipelineComponentAttribute.The following code example shows a simple component that derives from the base class, and applies the DtsPipelineComponentAttribute. È necessario aggiungere un riferimento all'assembly dtspipelinewrap.You need to add a reference to the Microsoft.SqlServer.DTSPipelineWrap assembly.

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

namespace Microsoft.Samples.SqlServer.Dts  
{  
    [DtsPipelineComponent(DisplayName = "SampleComponent", ComponentType = ComponentType.Transform )]  
    public class BasicComponent: PipelineComponent  
    {  
        // TODO: Override the base class methods.  
    }  
}  
Imports Microsoft.SqlServer.Dts.Pipeline  
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper  

<DtsPipelineComponent(DisplayName:="SampleComponent", ComponentType:=ComponentType.Transform)> _  
Public Class BasicComponent  

    Inherits PipelineComponent  

    ' TODO: Override the base class methods.  

End Class  

Vedere ancheSee Also

Sviluppo di un'interfaccia utente per un componente del flusso di datiDeveloping a User Interface for a Data Flow Component