Gestori eventi di Integration Services (SSIS)Integration Services (SSIS) Event Handlers

Durante la fase di esecuzione gli eseguibili, costituiti da pacchetti e contenitori Ciclo Foreach, Ciclo For, Sequenza e Host attività, generano eventi.At run time, executables (packages and Foreach Loop, For Loop, Sequence, and task host containers) raise events. Quando si verifica un errore, ad esempio, viene generato l'evento OnError.For example, an OnError event is raised when an error occurs. È possibile creare gestori di eventi personalizzati per tali eventi, per estendere le funzionalità dei pacchetti e semplificarne la gestione in fase di esecuzione.You can create custom event handlers for these events to extend package functionality and make packages easier to manage at run time. I gestori di eventi possono eseguire varie attività, ad esempio:Event handlers can perform tasks such as the following:

  • Cancellare l'archivio dati temporaneo al termine dell'esecuzione di un pacchetto o attività.Clean up temporary data storage when a package or task finishes running.

  • Recuperare informazioni di sistema per verificare la disponibilità delle risorse prima dell'esecuzione di un pacchetto.Retrieve system information to assess resource availability before a package runs.

  • Aggiornare dati in una tabella quando una ricerca in una tabella di riferimento non riesce.Refresh data in a table when a lookup in a reference table fails.

  • Inviare un messaggio di posta elettronica quando viene generato un errore o un avviso oppure quando un'attività non riesce.Send an e-mail message when an error or a warning occurs or when a task fails.

    Se per un evento non esiste alcun gestore, tale evento verrà passato al contenitore di livello immediatamente superiore nella gerarchia dei contenitori del pacchetto.If an event has no event handler, the event is raised to the next container up the container hierarchy in a package. Se il contenitore dispone di un gestore di evento, quest'ultimo verrà eseguito in risposta all'evento,If this container has an event handler, the event handler runs in response to the event. in caso contrario l'evento verrà passato al contenitore di livello immediatamente superiore nella gerarchia dei contenitori.If not, the event is raised to the next container up the container hierarchy.

    Nella figura seguente viene illustrato un semplice pacchetto che include un contenitore Ciclo For contenente un'attività Esegui SQL.The following diagram shows a simple package that has a For Loop container that contains one Execute SQL task.

    Pacchetto, ciclo For, host delle attività e attività Esegui SQLPackage, For Loop, task host, and Execute SQL task

    Solo il pacchetto dispone di un gestore di evento per il proprio evento OnError .Only the package has an event handler, for its OnError event. Se si verifica un errore mentre viene eseguita l'attività Esegui SQL, verrà eseguito il gestore dell'evento OnError del pacchetto.If an error occurs when the Execute SQL task runs, the OnError event handler for the package runs. Nella figura seguente viene illustrata la sequenza di chiamate che provoca l'esecuzione del gestore dell'evento OnError per il pacchetto.The following diagram shows the sequence of calls that causes the OnError event handler for the package to execute.

    Flusso del gestore dell'eventoEvent handler flow

    I gestori di eventi sono membri di un insieme di gestori di eventi, disponibile in tutti i contenitori.Event handlers are members of an event handler collection, and all containers include this collection. Se si crea un pacchetto utilizzando Progettazione SSISSSIS , sarà possibile visualizzare i membri dell'insieme dei gestori di eventi nelle cartelle Gestori eventi della scheda Esplora pacchetti di Progettazione SSISSSIS .If you create the package using SSISSSIS Designer, you can see the members of the event handler collections in the Event Handlers folders on the Package Explorer tab of SSISSSIS Designer.

    Per configurare il contenitore di un gestore di evento, procedere nel modo seguente:You can configure the event handler container in the following ways:

  • Specificare un nome e una descrizione per il gestore di evento.Specify a name and description for the event handler.

  • Indicare se il gestore di evento viene eseguito, se il pacchetto deve generare un errore in caso di errore del gestore di evento e il numero di errori che possono verificarsi prima che il gestore di evento generi a sua volta un errore.Indicate whether the event handler runs, whether the package fails if the event handler fails, and the number of errors that can occur before the event handler fails.

  • Specificare il risultato di esecuzione da restituire al posto di quello effettivamente restituito dal gestore di evento in fase di esecuzione.Specify an execution result to return instead of the actual execution result that the event handler returns at run time.

  • Specificare l'opzione relativa alle transazioni per il gestore di evento.Specify the transaction option for the event handler.

  • Specificare la modalità di registrazione utilizzata dal gestore di evento.Specify the logging mode that the event handler uses.

Contenuto di un gestore di eventoEvent Handler Content

La creazione di un gestore di evento è simile alla compilazione di un pacchetto. Un gestore di evento include attività e contenitori, ordinati in sequenza in modo da formare un flusso di controllo, e può includere anche flussi di dati.Creating an event handler is similar to building a package; an event handler has tasks and containers, which are sequenced into a control flow, and an event handler can also include data flows. In Progettazione SSISSSIS è disponibile la scheda Gestori eventi , che consente di creare gestori di eventi personalizzati.The SSISSSIS Designer includes the Event Handlers tab for creating custom event handlers.

È possibile creare gestori di eventi anche a livello di codice.You can also create event handlers programmatically. Per altre informazioni, vedere Gestione degli eventi a livello di programmazione.For more information, see Handling Events Programmatically.

Eventi di run-timeRun-Time Events

Nella tabella seguente vengono elencati i gestori di eventi disponibili in Integration ServicesIntegration Services e vengono descritti gli eventi di run-time che ne provocano l'esecuzione.The following table lists the event handlers that Integration ServicesIntegration Services provides, and describes the run-time events that cause the event handler to run.

Gestore di eventoEvent handler EventoEvent
OnErrorOnError Gestore di evento per l'evento OnError .The event handler for the OnError event. Questo evento viene generato da un eseguibile quando si verifica un errore.This event is raised by an executable when an error occurs.
OnExecStatusChangedOnExecStatusChanged Gestore di evento per l'evento OnExecStatusChanged .The event handler for the OnExecStatusChanged event. Questo evento viene generato da un eseguibile quando cambia il suo stato di esecuzione.This event is raised by an executable when its execution status changes.
OnInformationOnInformation Gestore di evento per l'evento OnInformation .The event handler for the OnInformation event. Questo evento viene generato durante la convalida e l'esecuzione di un eseguibile, allo scopo di fornire informazioni.This event is raised during the validation and execution of an executable to report information. Questo evento fornisce solo informazioni, non errori o avvisi.This event conveys information only, no errors or warnings.
OnPostExecuteOnPostExecute Gestore di evento per l'evento OnPostExecute .The event handler for the OnPostExecute event. Questo evento viene generato da un eseguibile immediatamente dopo la fine dell'esecuzione.This event is raised by an executable immediately after it has finished running.
OnPostValidateOnPostValidate Gestore di evento per l'evento OnPostValidate .The event handler for the OnPostValidate event. Questo evento viene generato da un eseguibile al termine della convalida.This event is raised by an executable when its validation is finished.
OnPreExecuteOnPreExecute Gestore di evento per l'evento OnPreExecute .The event handler for the OnPreExecute event. Questo evento viene generato da un eseguibile immediatamente prima della sua esecuzione.This event is raised by an executable immediately before it runs.
OnPreValidateOnPreValidate Gestore di evento per l'evento OnPreValidate .The event handler for the OnPreValidate event. Questo evento viene generato da un eseguibile all'inizio della sua convalida.This event is raised by an executable when its validation starts.
OnProgressOnProgress Gestore di evento per l'evento OnProgress .The event handler for the OnProgress event. Questo evento viene generato da un eseguibile quando compie un avanzamento misurabile.This event is raised by an executable when measurable progress is made by the executable.
OnQueryCancelOnQueryCancel Gestore di evento per l'evento OnQueryCancel .The event handler for the OnQueryCancel event. Questo evento viene generato da un eseguibile per determinare se l'esecuzione deve essere arrestata.This event is raised by an executable to determine whether it should stop running.
OnTaskFailedOnTaskFailed Gestore di evento per l'evento OnTaskFailed .The event handler for the OnTaskFailed event. Questo evento viene generato da un'attività quando non riesce.This event is raised by a task when it fails.
OnVariableValueChangedOnVariableValueChanged Gestore di evento per l'evento OnVariableValueChanged .The event handler for the OnVariableValueChanged event. Questo evento viene generato da un eseguibile quando il valore di una variabile viene modificato.This event is raised by an executable when the value of a variable changes. L'evento viene generato dall'eseguibile in cui è definita la variabile.The event is raised by the executable on which the variable is defined. Se la proprietà RaiseChangeEvent della variabile è impostata su False, questo evento non verrà generato.This event is not raised if you set the RaiseChangeEvent property for the variable to False. Per altre informazioni, vedere Integration Services (SSIS) Variables.For more information, see Integration Services (SSIS) Variables.
OnWarningOnWarning Gestore di evento per l'evento OnWarning .The event handler for the OnWarning event. Questo evento viene generato da un eseguibile quando viene generato un avviso.This event is raised by an executable when a warning occurs.

Aggiunta di un gestore eventi a un pacchettoAdd an event handler to a package

In fase di esecuzione contenitori e attività generano eventi.At run time, containers and tasks raise events. È possibile creare gestori di eventi personalizzati che rispondono a tali eventi eseguendo un flusso di lavoro alla generazione dell'evento.You can create custom event handlers that respond to these events by running a workflow when the event is raised. Ad esempio, è possibile creare un gestore di evento che invia un messaggio di posta elettronica quando un'attività non viene completata correttamente.For example, you can create an event handler that sends an e-mail message when a task fails.

Un gestore di evento è simile a un pacchetto.An event handler is similar to a package. Come un pacchetto, può fornire un ambito per le variabili e includere un flusso di controllo, oltre a flussi di dati facoltativi.Like a package, an event handler can provide scope for variables, and includes a control flow and optional data flows. È possibile compilare gestori di eventi per i pacchetti, per il contenitore Ciclo Foreach, per il contenitore Ciclo For, per il contenitore Sequenza e per tutte le attività.You can build event handlers for packages, the Foreach Loop container, the For Loop container, the Sequence container, and all tasks.

Per creare i gestori di eventi è possibile usare l'area di progettazione della scheda Gestori eventi in Progettazione SSISSSIS .You create event handlers by using the design surface of the Event Handlers tab in SSISSSIS Designer.

Quando la scheda Gestori eventi è attiva, nei nodi Elementi flusso di controllo e Attività di manutenzione della casella degli strumenti di Progettazione SSISSSIS sono disponibili le attività e i contenitori necessari per la compilazione del flusso di controllo del gestore di evento.When the Event Handlers tab is active, the Control Flow Items and Maintenance Plan Tasks nodes of the Toolbox in SSISSSIS Designer contain the task and containers for building the control flow in the event handler. Nei nodi Origini flusso di dati, Trasformazionie Destinazioni flusso di dati sono disponibili le origini dei dati, le trasformazioni e le destinazioni per la compilazione dei flussi di dati nel gestore di evento.The Data Flow Sources, Transformations, and Data Flow Destinations nodes contain the data sources, transformations, and destinations for building the data flows in the event handler. Per altre informazioni, vedere Flusso di controllo e Flusso di dati.For more information, see Control Flow and Data Flow.

La scheda Gestori eventi include anche l'area Gestioni connessioni , in cui è possibile creare e modificare le gestioni connessioni usate dai gestori di eventi per connettersi a server e origini dei dati.The Event Handlers tab also includes the Connections Managers area where you can create and modify the connection managers that event handlers use to connect to servers and data sources. Per altre informazioni, vedere Creazione di gestioni connessioni.For more information, see Create Connection Managers.

Aggiungere un gestore eventi nella scheda gestori eventiAdd an event handler on the Event Handlers tab

  1. In SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT)aprire il progetto di Integration ServicesIntegration Services che contiene il pacchetto desiderato.In SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT), open the Integration ServicesIntegration Services project that contains the package you want.

  2. In Esplora soluzioni fare doppio clic sul pacchetto per aprirlo.In Solution Explorer, double-click the package to open it.

  3. Fare clic sulla scheda Gestori eventi .Click the Event Handlers tab.

    Schermata dell'area di progettazione con gestore dell'eventoScreenshot of design surface with event handler

    La creazione del flusso di controllo e dei flussi di dati di un gestore dell'evento è analoga alla creazione del flusso di controllo e dei flussi di dati di un pacchetto.Creating the control flow and data flows in an event handler is similar to creating the control flow and data flows in a package. Per altre informazioni, vedere Flusso di controllo e Flusso di dati.For more information, see Control Flow and Data Flow.

  4. Nell'elenco File eseguibili selezionare il file per il quale si desidera creare un gestore dell'evento.In the Executable list, select the executable for which you want to create an event handler.

  5. Nell'elenco Gestore evento selezionare il gestore dell'evento che si desidera compilare.In the Event handler list, select the event handler you want to build.

  6. Fare clic sul collegamento nell'area di progettazione della scheda Gestore evento .Click the link on the design surface of the Event Handler tab.

  7. Aggiungere le voci del flusso di controllo nel gestore dell'evento, quindi connetterle tra di loro tramite un vincolo di precedenza trascinando il vincolo da una voce del flusso di controllo a un'altra.Add control flow items to the event handler, and connect items using a precedence constraint by dragging the constraint from one control flow item to another. Per altre informazioni, vedere Flusso di controllo.For more information, see Control Flow.

  8. Facoltativamente, aggiungere un'attività Flusso di dati e nell'area di progettazione della scheda Flusso di dati creare un flusso di dati per il gestore dell'evento.Optionally, add a Data Flow task, and on the design surface of the Data Flow tab, create a data flow for the event handler. Per altre informazioni, vedere Flusso di dati.For more information, see Data Flow.

  9. Scegliere Salva elementi selezionati dal menu File per salvare il pacchetto.On the File menu, click Save Selected Items to save the package.

Impostare le proprietà di un gestore eventiSet the properties of an event handler

È possibile impostare le proprietà a livello di codice o nella finestra Proprietà di SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT) .You can set properties in the Properties window of SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT) or programmatically.

Per informazioni su come impostare queste proprietà nella finestra di Progettazione SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT), vedere Impostazione delle proprietà di un'attività o di un contenitore.For information about how to set these properties in SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT), see Set the Properties of a Task or Container.

Per informazioni sull'impostazione di queste proprietà a livello di codice, vedere DtsEventHandler.For information about programmatically setting these properties, see DtsEventHandler.

Per informazioni su come aggiungere un gestore eventi a un pacchetto, vedere Aggiunta di un gestore eventi a un pacchetto.For information about how to add an event handler to a package, see Add an Event Handler to a Package.