Sviluppo di oggetti personalizzati per Integration ServicesDeveloping Custom Objects for Integration Services

Quando il flusso di controllo e flusso di dati gli oggetti inclusi con SQL ServerSQL Server Integration ServicesIntegration Services non soddisfano completamente specifici requisiti, è possibile sviluppare molti tipi di oggetti personalizzati, tra:When the control flow and data flow objects that are included with SQL ServerSQL Server Integration ServicesIntegration Services do not completely meet your requirements, you can develop many types of custom objects on your own including:

  • Attività personalizzate.Custom tasks.

  • Gestioni connessioni personalizzate.Custom connection managers. Consentono la connessione a origini dati esterne attualmente non supportate.Connect to external data sources that are not currently supported.

  • Provider di log personalizzati.Custom log providers. Consentono di registrare eventi dei pacchetti in formati attualmente non supportati.Log package events in formats that are not currently supported.

  • Enumeratori personalizzati.Custom enumerators. Supportano l'iterazione in un set di oggetti o valori in formati attualmente non supportati.Support iteration over a set of objects or values formats that are not currently supported.

  • Componenti del flusso di dati personalizzati.Custom data flow components. Possono essere configurati come origini, trasformazioni o destinazioni.Can be configured as sources, transformations, or destinations.

    Il modello a oggetti di Integration ServicesIntegration Services facilita questo sviluppo personalizzato con classi di base che forniscono un framework coerente e affidabile per l'implementazione personalizzata.The Integration ServicesIntegration Services object model facilitates this custom development with base classes that provide a consistent and reliable framework for your custom implementation.

    Se non è necessario riutilizzare la funzionalità personalizzata in più pacchetti, l'attività Script e il componente script offrono tutte le funzionalità di un linguaggio di programmazione gestito con una quantità decisamente minore di codice dell'infrastruttura da scrivereIf you do not have to reuse custom functionality across multiple packages, the Script task and the Script component give you the full power of a managed programming language with significantly less infrastructure code to write. Per ulteriori informazioni, vedere confronto tra soluzioni di Scripting e oggetti personalizzati.For more information, see Comparing Scripting Solutions and Custom Objects.

Passaggi per lo sviluppo di un oggetto personalizzato Integration ServicesSteps in Developing a Custom Object for Integration Services

Quando si sviluppa un oggetto personalizzato per l'utilizzo in Integration ServicesIntegration Services, è necessario sviluppare una libreria di classi (DLL) che verrà caricata in fase di progettazione e di esecuzione da Progettazione SSIS e dal runtime di Integration ServicesIntegration Services.When you develop a custom object for use in Integration ServicesIntegration Services, you develop a Class Library (a DLL) that will be loaded at design time and run time by SSIS Designer and by the Integration ServicesIntegration Services runtime. I metodi più importanti che è necessario implementare non sono quelli che lo sviluppatore chiama dal codice personalizzato, ma quelli chiamati dal runtime nei momenti appropriati per inizializzare e convalidare i componenti e richiamarne le funzionalità.The most important methods that you must implement are not methods that you call from your own code, but methods that the runtime calls at appropriate times to initialize and validate your component and to invoke its functionality.

Di seguito sono riportati i passaggi che è necessario completare per lo sviluppo di un oggetto personalizzato:Here are the steps that you follow in developing a custom object:

  1. Creare un nuovo progetto di tipo Libreria di classi nel linguaggio di programmazione gestito preferito.Create a new project of type Class Library in your preferred managed programming language.

  2. Ereditare dalla classe di base appropriata, come illustrato nella tabella seguente.Inherit from the appropriate base class, as shown in the following table.

  3. Applicare l'attributo appropriato alla nuova classe, come illustrato nella tabella seguente.Apply the appropriate attribute to your new class, as shown in the following table.

  4. Eseguire l'override dei metodi della classe di base, se necessario, e scrivere codice per la funzionalità personalizzata dell'oggetto.Override the methods of the base class as required and write code for the custom functionality of your object.

  5. Facoltativamente, compilare un'interfaccia utente personalizzata per il componente.Optionally, build a custom user interface for your component. Per agevolare la distribuzione, è possibile sviluppare l'interfaccia utente come progetto distinto nella stessa soluzione e compilarla come assembly distinto.For ease of deployment, you may want to develop the user interface as a separate project within the same solution, and to build it as a separate assembly.

  6. Facoltativamente, visualizzare un collegamento a esempi e contenuto della Guida per l'oggetto personalizzato nel casella degli strumenti SSIS.Optionally, display a link to samples and Help content for the custom object, in the SSIS Toolbox.

  7. Compilare, distribuire ed eseguire il debug del nuovo oggetto personalizzato come descritto in compilazione, distribuzione e debug di oggetti personalizzati.Build, deploy, and debug your new custom object as described in Building, Deploying, and Debugging Custom Objects.

Classi di base, attributi e metodi importantiBase Classes, Attributes, and Important Methods

In questa tabella viene fornito un riferimento rapido agli elementi più importanti del modello a oggetti Integration ServicesIntegration Services per ogni tipo di oggetto personalizzato che è possibile sviluppare.This table provides an easy reference to the most important elements in the Integration ServicesIntegration Services object model for each type of custom object that you can develop.

Oggetto personalizzatoCustom object Classe di baseBase class AttributeAttribute Metodi importantiImportant methods
AttivitàTask Task DtsTaskAttribute Execute
Gestione connessioneConnection manager ConnectionManagerBase DtsConnectionAttribute AcquireConnection, ReleaseConnectionAcquireConnection, ReleaseConnection
Provider di logLog provider LogProviderBase DtsLogProviderAttribute OpenLog, Log, CloseLogOpenLog, Log, CloseLog
EnumeratoreEnumerator ForEachEnumerator DtsForEachEnumeratorAttribute GetEnumerator
Componente del flusso di datiData flow component PipelineComponent DtsPipelineComponentAttribute ProvideComponentProperties, PrimeOutput, ProcessInputProvideComponentProperties, PrimeOutput, ProcessInput

Per visualizzare un collegamento nel casella degli strumenti SSIS a esempi e contenuto della Guida per un oggetto personalizzato scritto in codice gestito, utilizzare le seguenti proprietà.To display a link in the SSIS Toolbox to samples and Help content for a custom object written in managed code, use the following properties.

Sviluppo di un'interfaccia utente personalizzataProviding a Custom User Interface

Per consentire agli utenti dell'oggetto personalizzato di configurarne le proprietà, può essere necessario sviluppare anche un'interfaccia utente personalizzata.To allow users of your custom object to configure its properties, you may have to develop a custom user interface also. Nei casi in cui un'interfaccia utente personalizzata non sia strettamente necessaria, è possibile scegliere di crearne una per fornire un'interfaccia più intuitiva rispetto all'editor predefinito.In those cases where a custom user interface is not strictly required, you may choose to create one to provide a more user-friendly interface than the default editor.

In un progetto o assembly di interfaccia utente personalizzata sono in genere incluse due classi: una classe che implementa un'interfaccia Integration ServicesIntegration Services per le interfacce utente per il tipo specifico di oggetto personalizzato e il Windows Form che l'interfaccia visualizza per raccogliere informazioni dall'utente.In a custom user interface project or assembly, you generally have two classes —a class that implements an Integration ServicesIntegration Services interface for user interfaces for the specific type of custom object, and the Windows form that it displays to gather information from the user. Le interfacce che si implementano includono solo alcuni metodi e un'interfaccia utente personalizzata non è difficile da sviluppare.The interfaces that you implement have only a few methods, and a custom user interface is not difficult to develop.

Nota

Molti Integration ServicesIntegration Services i provider di log hanno un'interfaccia utente personalizzata che implementa IDtsLogProviderUI e sostituisce il configurazione casella di testo con un elenco a discesa filtrato di gestioni connessioni disponibili.Many Integration ServicesIntegration Services log providers have a custom user interface that implements IDtsLogProviderUI and replaces the Configuration text box with a filtered drop-down list of available connection managers. Tuttavia, le interfacce utente personalizzate per i provider di log personalizzati non sono implementate in questa versione di Integration ServicesIntegration Services.However custom user interfaces for custom log providers are not implemented in this release of Integration ServicesIntegration Services. L'impostazione di un valore per la proprietà UITypeName di DtsLogProviderAttribute non ha alcun effetto.Specifying a value for the UITypeName property of the DtsLogProviderAttribute has no effect.

Nella tabella seguente viene fornito un riferimento rapido alle interfacce che è necessario implementare quando si sviluppa un'interfaccia utente personalizzata per ogni tipo di oggetto personalizzato.The following table provides an easy reference to the interfaces that you must implement when you develop a custom user interface for each type of custom object. Viene inoltre spiegato quanto l'utente viene visualizzato se si sceglie di non sviluppare un'interfaccia utente personalizzata per l'oggetto, o se non è possibile collegare l'oggetto alla relativa interfaccia utente utilizzando il UITypeName proprietà nell'attributo dell'oggetto.It also explains what the user sees if you choose not to develop a custom user interface for your object, or if you fail to link your object to its user interface by using the UITypeName property in the object's attribute. Anche se il potente editor avanzato può essere soddisfacente per un componente del flusso di dati personalizzato, la finestra delle proprietà è una soluzione meno semplice da utilizzare per attività e gestioni connessioni e un enumeratore Foreach personalizzato non può essere configurato senza un form personalizzato.Although the powerful Advanced Editor may be satisfactory for a data flow component, the Properties window is a less user-friendly solution for tasks and connection managers, and a custom ForEach enumerator cannot be configured at all without a custom form.

Oggetto personalizzatoCustom object Classe di base per l'interfaccia utenteBase class for user interface Comportamento di modifica predefinito senza un'interfaccia utente personalizzataDefault editing behavior if no custom user interface is provided
AttivitàTask IDtsTaskUI Solo finestra delle proprietàProperties window only
Gestione connessioneConnection manager IDtsConnectionManagerUI Solo finestra delle proprietàProperties window only
Provider di logLog provider IDtsLogProviderUI

(non implementato in Integration ServicesIntegration Services)(Not implemented in Integration ServicesIntegration Services)
Casella di testo in configurazione colonnaText box in Configuration column
EnumeratoreEnumerator ForEachEnumeratorUI Solo finestra delle proprietà.Properties window only. L'area Configurazione enumeratore dell'editor è vuota.Enumerator Configuration area of editor is empty.
Componente del flusso di datiData flow component IDtsComponentUI Editor avanzatoAdvanced Editor

Risorse esterneExternal Resources

Vedere ancheSee Also

Persistenza degli oggetti personalizzati Persisting Custom Objects
Compilazione, distribuzione e debug di oggetti personalizzatiBuilding, Deploying, and Debugging Custom Objects