Sviluppo di oggetti personalizzati per Integration Services

Si applica a: SQL Server SSIS Integration Runtime in Azure Data Factory

Quando gli oggetti del flusso di controllo e del flusso di dati inclusi in SQL Server Integration Services non soddisfano completamente specifici requisiti, è possibile sviluppare molti tipi di oggetti personalizzati, tra cui:

  • Attività personalizzate.

  • Gestioni connessioni personalizzate. Consentono la connessione a origini dati esterne attualmente non supportate.

  • Provider di log personalizzati. Consentono di registrare eventi dei pacchetti in formati attualmente non supportati.

  • Enumeratori personalizzati. Supportano l'iterazione in un set di oggetti o valori in formati attualmente non supportati.

  • Componenti flusso di dati personalizzati. Possono essere configurati come origini, trasformazioni o destinazioni.

Il modello a oggetti di Integration Services facilita questo sviluppo personalizzato con classi di base che forniscono un framework coerente e affidabile per l'implementazione personalizzata.

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 scrivere Per altre informazioni, vedere Confronto tra soluzioni di scripting e oggetti personalizzati.

Passaggi per lo sviluppo di un oggetto personalizzato Integration Services

Quando si sviluppa un oggetto personalizzato per l'uso in Integration 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 Services. 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à.

Di seguito sono riportati i passaggi che è necessario completare per lo sviluppo di un oggetto personalizzato:

  1. Creare un nuovo progetto di tipo Libreria di classi nel linguaggio di programmazione gestito preferito.

  2. Ereditare dalla classe di base appropriata, come illustrato nella tabella seguente.

  3. Applicare l'attributo appropriato alla nuova classe, come illustrato nella tabella seguente.

  4. Eseguire l'override dei metodi della classe di base, se necessario, e scrivere codice per la funzionalità personalizzata dell'oggetto.

  5. Facoltativamente, compilare un'interfaccia utente personalizzata per il componente. Per agevolare la distribuzione, è possibile sviluppare l'interfaccia utente come progetto distinto nella stessa soluzione e compilarla come assembly distinto.

  6. Facoltativamente, visualizzare un collegamento a esempi e contenuto della Guida per l'oggetto personalizzato nella Casella degli strumenti SSIS.

  7. Compilare, distribuire ed eseguire il debug del nuovo oggetto personalizzato come descritto in Compilazione, distribuzione e debug di oggetti personalizzati.

Classi di base, attributi e metodi importanti

In questa tabella viene fornito un riferimento rapido agli elementi più importanti del modello a oggetti di Integration Services per ogni tipo di oggetto personalizzato che è possibile sviluppare.

Oggetto personalizzato Classe base Attributo Metodi importanti
Attività Task DtsTaskAttribute Execute
Connection manager ConnectionManagerBase DtsConnectionAttribute AcquireConnection, ReleaseConnection
Provider di log LogProviderBase DtsLogProviderAttribute OpenLog, Log, CloseLog
Enumeratore ForEachEnumerator DtsForEachEnumeratorAttribute GetEnumerator
Componente del flusso di dati PipelineComponent DtsPipelineComponentAttribute ProvideComponentProperties, PrimeOutput, ProcessInput

Per visualizzare un collegamento nella Casella degli strumenti SSIS a esempi e contenuto della Guida per un oggetto personalizzato scritto in codice gestito, usare le proprietà seguenti.

Per visualizzare un collegamento a esempi e contenuto della Guida per un oggetto personalizzato scritto in codice nativo, aggiungere voci nel file (con estensione rgs) dello script del Registro di sistema per SamplesTag, HelpKeyword e HelpCollection. Di seguito viene riportato un esempio.

val HelpKeyword = s 'sql11.dts.designer.executepackagetask.F1'

val SamplesTag = s 'ExecutePackageTask'

Sviluppo di un'interfaccia utente personalizzata

Per consentire agli utenti dell'oggetto personalizzato di configurarne le proprietà, può essere necessario sviluppare anche un'interfaccia utente personalizzata. 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 un progetto o assembly di interfaccia utente personalizzata sono in genere incluse due classi: una classe che implementa un'interfaccia Integration 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. Le interfacce che si implementano includono solo alcuni metodi e un'interfaccia utente personalizzata non è difficile da sviluppare.

Nota

Molti provider di log di Integration Services hanno un'interfaccia utente personalizzata che implementa IDtsLogProviderUI e sostituisce la casella di testo Configurazione con un elenco a discesa filtrato di gestioni connessioni disponibili. Tuttavia, le interfacce utente personalizzate per i provider di log personalizzati non sono implementate in questa versione di Integration Services. L'impostazione di un valore per la proprietà UITypeName di DtsLogProviderAttribute non ha alcun effetto.

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. Viene inoltre illustrato ciò che l'utente visualizza se si sceglie di non sviluppare un'interfaccia utente personalizzata per l'oggetto oppure se l'oggetto non viene collegato alla relativa interfaccia utente tramite la proprietà UITypeName nell'attributo dell'oggetto. 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.

Oggetto personalizzato Classe di base per l'interfaccia utente Comportamento di modifica predefinito senza un'interfaccia utente personalizzata
Attività IDtsTaskUI Solo finestra delle proprietà
Connection manager IDtsConnectionManagerUI Solo finestra delle proprietà
Provider di log IDtsLogProviderUI

(Non implementato in Integration Services)
Casella di testo nella colonna Configurazione
Enumeratore ForEachEnumeratorUI Solo finestra delle proprietà. L'area Configurazione enumeratore dell'editor è vuota.
Componente del flusso di dati IDtsComponentUI Editor avanzato

Risorse esterne

Vedi anche

Persistenza degli oggetti personalizzati
Compilazione, distribuzione e debug di oggetti personalizzati