Debug del flusso di controlloDebugging Control Flow

SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT) e MicrosoftMicrosoft Integration ServicesIntegration Services includono funzionalità e strumenti che è possibile usare per la risoluzione dei problemi del flusso di controllo in un pacchetto di Integration ServicesIntegration Services . and MicrosoftMicrosoft Integration ServicesIntegration Services include features and tools that you can use to troubleshoot the control flow in an Integration ServicesIntegration Services package.

  • Integration ServicesIntegration Services supporta l'uso di punti di interruzione in contenitori e attività. supports breakpoints on containers and tasks.

  • SSISSSIS Progettazione genera report di stato in fase di runtime. Designer provides progress reporting at run time.

  • SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT) offre finestre di debug. provides debug windows.

Punti di interruzioneBreakpoints

SSISSSIS Progettazione include la finestra di dialogo Imposta punti di interruzione , che consente di impostare punti di interruzione attivando condizioni di interruzione e specificando per quante volte può essere rilevato un punto di interruzione prima che l'esecuzione del pacchetto venga sospesa. Designer provides the Set Breakpoints dialog box, in which you can set breakpoints by enabling break conditions and specifying the number of times a breakpoint can occur before the execution of the package is suspended. I punti di interruzione possono essere abilitati a livello di pacchetto oppure a livello di singolo componente.Breakpoints can be enabled at the package level, or at the level of the individual component. Se le condizioni di interruzione vengono abilitate a livello di attività o di contenitore, nell'area di progettazione della scheda Flusso di controllo accanto all'attività o al contenitore verrà visualizzata l'icona del punto di interruzione.If break conditions are enabled at the task or container level, the breakpoint icon appears next to the task or container on the design surface of the Control Flow tab. Se le condizioni di interruzione vengono abilitate a livello di pacchetto, l'icona del punto di interruzione verrà visualizzata sull'etichetta della scheda Flusso di controllo .If the break conditions are enabled on the package, the breakpoint icon appears on the label of the Control Flow tab.

Quando viene rilevato un punto di interruzione, la relativa icona viene modificata in modo da aiutare l'utente a identificarne l'origine.When a breakpoint is hit, the breakpoint icon changes to help you identify the source of the breakpoint. È possibile aggiungere, eliminare e modificare i punti di interruzione durante l'esecuzione del pacchetto.You can add, delete, and change breakpoints when the package is running.

Integration ServicesIntegration Services offre dieci condizioni di interruzione che è possibile abilitare su tutte le attività e i contenitori. provides ten break conditions that you can enable on all tasks and containers. Nella finestra di dialogo Imposta punti di interruzione è possibile abilitare punti di interruzione per le condizioni seguenti:In the Set Breakpoints dialog box, you can enable breakpoints on the following conditions:

Condizione di interruzioneBreak condition DescriptionDescription
Quando l'evento OnPreExecute viene ricevuto dall'attività o dal contenitore.When the task or container receives the OnPreExecute event. Viene chiamata quando l'attività sta per essere eseguita.Called when a task is about to execute. Questo evento viene generato da un'attività o da un contenitore immediatamente prima della sua esecuzione.This event is raised by a task or a container immediately before it runs.
Quando l'evento OnPostExecute viene ricevuto dall'attività o dal contenitore.When the task or container receives the OnPostExecute event. Viene chiamata immediatamente dopo il termine della logica di esecuzione dell'attività.Called immediately after the execution logic of the task finishes. Questo evento viene generato da un'attività o da un contenitore immediatamente dopo la sua esecuzione.This event is raised by a task or container immediately after it runs.
Quando l'evento OnError viene ricevuto dall'attività o dal contenitore.When the task or container receives the OnError event. Viene chiamata da un'attività o un contenitore quando si verifica un errore.Called by a task or container when an error occurs.
Quando l'evento OnWarning viene ricevuto dall'attività o dal contenitore.When the task or container receives the OnWarning event. Viene chiamata quando l'attività è in uno stato che non giustifica un errore, ma richiede la visualizzazione di un avviso.Called when the task is in a state that does not justify an error, but does warrant a warning.
Quando l'evento OnInformation viene ricevuto dall'attività o dal contenitore.When the task or container receives the OnInformation event. Viene chiamata quando l'attività deve fornire informazioni.Called when the task is required to provide information.
Quando l'evento OnTaskFailed viene ricevuto dall'attività o dal contenitore.When the task or container receives the OnTaskFailed event. Viene chiamata dall'host delle attività in caso di errore.Called by the task host when it fails.
Quando l'evento OnProgress viene ricevuto dall'attività o dal contenitore.When the task or container receives the OnProgress event. Viene chiamata per aggiornare le informazioni sullo stato di esecuzione dell'attività.Called to update progress about task execution.
Quando l'evento OnQueryCancel viene ricevuto dall'attività o dal contenitore.When the task or container receives the OnQueryCancel event. Viene chiamata in qualsiasi momento dell'elaborazione dell'attività in cui è possibile annullare l'esecuzione.Called at any time in task processing when you can cancel execution.
Quando l'evento OnVariableValueChanged viene ricevuto dall'attività o dal contenitore.When the task or container receives the OnVariableValueChanged event. Viene chiamata dal runtime di Integration ServicesIntegration Services quando il valore di una variabile viene modificato.Called by the Integration ServicesIntegration Services runtime when the value of a variable changes. Affinché venga generato questo evento, il valore della proprietà RaiseChangeEvent della variabile deve essere impostato su true .The RaiseChangeEvent of the variable must be set to true to raise this event.

** Avviso *\* La variabile associata a questo punto di interruzione deve essere definita nell'ambito del contenitore .** Warning *\* The variable associated with this breakpoint must be defined at the container scope. Se la variabile viene definita nell'ambito del pacchetto, il punto di interruzione non viene raggiunto.If the variable is defined at the package scope, the breakpoint does not get hit.
Quando l'evento OnCustomEvent viene ricevuto dall'attività o dal contenitore.When the task or container receives the OnCustomEvent event. Chiamato dalle attività per generare eventi personalizzati definiti per le singole attività.Called by tasks to raise custom task-defined events.

Oltre a quelle disponibili per tutte le attività e i contenitori, alcuni contenitori e attività includono speciali condizioni di interruzione per l'impostazione dei punti di interruzione.In addition to the break conditions available to all tasks and containers, some tasks and containers include special break conditions for setting breakpoints. Per il contenitore Ciclo For è ad esempio possibile abilitare un punto di interruzione che sospende l'esecuzione all'inizio di ogni iterazione del ciclo.For example, you can enable a break condition on the For Loop container that sets a breakpoint that suspends execution at the start of each iteration of the loop.

Per aumentare la flessibilità e l'efficacia di un punto di interruzione, è possibile modificarne il comportamento specificando le opzioni seguenti:To add flexibility and power to a breakpoint, you can modify the behavior of a breakpoint by specifying the following options:

  • Il numero di passaggi, ovvero il massimo numero di volte per cui può verificarsi una condizione di interruzione prima che l'esecuzione venga sospesa.The hit count, or the maximum number of times that a break condition occurs before the execution is suspended.

  • Il tipo di passaggi, ovvero la regola che specifica in quali casi la condizione di interruzione deve attivare il punto di interruzione.The hit count type, or the rule that specifies when the break condition triggers the breakpoint.

    Ad eccezione del tipo Sempre, il tipo di passaggi è ulteriormente qualificato dall'opzione Passaggi.The hit count types, except for the Always type, are further qualified by the hit count. Se ad esempio il tipo è "Numero di passaggi uguale a" e l'opzione Passaggi è 5, l'esecuzione verrà sospesa alla sesta occorrenza della condizione di interruzione.For example, if the type is "Hit count equals" and the hit count is 5, execution is suspended on the sixth occurrence of the break condition.

    Nella tabella seguente vengono descritti i tipi di passaggi disponibili.The following table describes the hit count types.

Tipo di passaggiHit count type DescriptionDescription
AlwaysAlways L'esecuzione viene sempre sospesa al rilevamento di un punto di interruzione.Execution is always suspended when the breakpoint is hit.
Numero di passaggi uguale aHit count equals L'esecuzione viene sospesa quando il punto di interruzione viene rilevato per un numero di volte uguale al numero di passaggi specificato.Execution is suspended when the number of times the breakpoint has occurred is equal to the hit count.
Numero di passaggi maggiore o uguale aHit count greater than or equal to L'esecuzione viene sospesa quando il punto di interruzione viene rilevato per un numero di volte maggiore o uguale al numero di passaggi specificato.Execution is suspended when the number of times the breakpoint has occurred is equal to or greater than the hit count.
Numero di passaggi multiplo diHit count multiple L'esecuzione viene sospesa quando il punto di interruzione viene rilevato per un numero di volte multiplo del numero di passaggi specificato.Execution is suspended when a multiple of the hit count occurs. Se ad esempio questa opzione è impostata su 5, l'esecuzione verrà sospesa ogni cinque volte.For example, if you set this option to 5, execution is suspended every fifth time.

Per impostare punti di interruzioneTo set breakpoints

Report di statoProgress Reporting

SSISSSIS Progettazione include due tipi di report di stato: stato con codifica a colori sull'area di progettazione della scheda Flusso di controllo e messaggi di stato visualizzati sulla scheda Stato . Designer includes two types of progress reporting: color-coding on the design surface of the Control Flow tab, and progress messages on the Progress tab.

Durante l'esecuzione di un pacchetto, Progettazione SSISSSIS indica l'avanzamento dell'esecuzione visualizzando ogni attività o contenitore con un colore che ne indica lo stato di esecuzione.When you run a package, SSISSSIS Designer depicts execution progress by displaying each task or container using a color that indicates execution status. Dal colore è possibile capire se l'elemento è in attesa di esecuzione, in fase di esecuzione, ha terminato l'esecuzione o è stato interrotto senza completare l'esecuzione.You can tell by its color whether the element is waiting to run, currently running, has completed successfully, or has ended unsuccessfully. Quando l'esecuzione del pacchetto viene arrestata, la codifica a colori non viene più utilizzata.After you stop package execution, the color-coding disappears.

Nella tabella seguente vengono descritti i colori utilizzati per indicare lo stato dell'esecuzione.The following table describes the colors that are used to depict execution status.

ColoreColor Stato esecuzioneExecution status
GrigioGray In attesa di esecuzione.Waiting to run
GialloYellow In esecuzioneRunning
GreenGreen L'esecuzione è stata completata.Ran successfully
evidenziazionehighlighted Il componente è stato eseguito con errori.Ran with errors

La scheda Stato elenca i contenitori e le attività in ordine di esecuzione, oltre all'ora di inizio e di fine, agli avvisi e ai messaggi di errore.The Progress tab lists tasks and containers in execution order and includes the start and finish times, warnings, and error messages. Dopo l'arresto dell'esecuzione di un pacchetto, le informazioni sullo stato rimangono disponibili nella scheda Risultati esecuzione .After you stop package execution, the progress information remains available on the Execution Results tab.

Nota

Per abilitare o disabilitare la visualizzazione di messaggi nella scheda Stato , attivare o disattivare l'opzione Debug report di stato del menu SSIS .To enable or disable the display of messages on the Progress tab, toggle the Debug Progress Reporting option on the SSIS menu.

Il diagramma illustra la scheda Stato .The following diagram shows the Progress tab.

Scheda stato di progettazione SSISProgress tab of SSIS Designer

Finestre di debugDebug Windows

SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT) include numerose finestre che è possibile usare per la gestione dei punti di interruzione e per il debug dei pacchetti contenenti punti di interruzione. includes many windows that you can use to work with breakpoints, and to debug packages that contain breakpoints. Per ulteriori informazioni su una finestra specifica, aprirla e premere F1 per visualizzare l'argomento della Guida corrispondente.To learn more about each window, open the window, and then press F1 to display Help for the window.

Per aprire queste finestre in SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT), scegliere Finestre dal menu Debuge quindi Punti di interruzione, Outputo Controllo immediato.To open these windows in SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT), click the Debug menu, point to Windows, and then click Breakpoints, Output, or Immediate.

Nella tabella seguente vengono descritte le finestre disponibili.The following table describes the windows.

FinestraWindow DescriptionDescription
Punti di interruzioneBreakpoints Elenca i punti di interruzione presenti in un pacchetto e include opzioni che consentono di abilitarli ed eliminarli.Lists the breakpoints in a package and provides options to enable and delete breakpoints.
OutputOutput Visualizza messaggi di stato per le funzionalità di SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT).Displays status messages for features in SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT).
Controllo immediatoImmediate Consente di valutare espressioni ed eseguirne il debug, nonché di visualizzare i valori delle variabili.Used to debug and evaluate expressions and print variable values.

Debug di un pacchetto impostando punti di interruzione in un'attività o in un contenitore Debug a Package by Setting Breakpoints on a Task or a Container

In questa procedura viene descritto come impostare punti di interruzione in un pacchetto, in un'attività o in un contenitore Ciclo For, Ciclo Foreach o Sequenza.This procedure describes how to set breakpoints in a package, a task, a For Loop container, a Foreach Loop container, or a Sequence container.

Per impostare punti di interruzione in un pacchetto, in un'attività o in un contenitoreTo set breakpoints in a package, a task, or a container

  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. Fare doppio clic sul pacchetto in cui si desidera impostare punti di interruzione.Double-click the package in which you want to set breakpoints.

  3. In Progettazione SSIS eseguire una delle operazioni seguenti:In SSIS Designer, do the following:

    • Per impostare punti di interruzione nell'oggetto di pacchetto, nella scheda Flusso di controllo posizionare il cursore in un punto qualsiasi dello sfondo dell'area di progettazione, fare clic con il pulsante destro del mouse e quindi scegliere Modifica punti di interruzione.To set breakpoints in the package object, click the Control Flow tab, place the cursor anywhere on the background of the design surface, right-click, and then click Edit Breakpoints.

    • Per impostare punti di interruzione nel flusso di controllo di un pacchetto, nella scheda Flusso di controllo fare clic con il pulsante destro del mouse su un'attività o su un contenitore Ciclo For, Ciclo Foreach o Sequenza e quindi scegliere Modifica punti di interruzione.To set breakpoints in a package control flow, click the Control Flow tab, right-click a task, a For Loop container, a Foreach Loop container, or a Sequence container, and then click Edit Breakpoints.

    • Per impostare punti di interruzione in un gestore evento, nella scheda Gestore evento fare clic con il pulsante destro del mouse su un'attività o su un contenitore Ciclo For, Ciclo Foreach o Sequenza e quindi scegliere Modifica punti di interruzione.To set breakpoints in an event handler, click the Event Handler tab, right-click a task, a For Loop container, a Foreach Loop container, or a Sequence container, and then click Edit Breakpoints.

  4. Nel Imposta punti di interruzione <nome contenitore > finestra di dialogo, selezionare i punti di interruzione da abilitare.In the Set Breakpoints <container name> dialog box, select the breakpoints to enable.

  5. Facoltativamente, modificare il tipo di passaggi e il numero di passaggi per ogni punto di interruzione.Optionally, modify the hit count type and the hit count number for each breakpoint.

  6. Per salvare il pacchetto, scegliere Salva elementi selezionati dal menu File .To save the package, click Save Selected Items on the File menu.

Imposta punti di interruzioneSet Breakpoints

Utilizzare la finestra di dialogo Imposta punti di interruzione per specificare gli eventi su cui abilitare i punti di interruzione e per controllarne il funzionamento.Use the Set Breakpoints dialog box to specify the events on which to enable breakpoints and to control the behavior of the breakpoint.

OpzioniOptions

AbilitataEnabled
Consente di abilitare un punto di interruzione su un evento.Select to enable a breakpoint on an event.

Condizione interruzioneBreak Condition
Consente di visualizzare un elenco di eventi disponibili sui quali è possibile impostare i punti di interruzione.View a list of available events on which to set breakpoints.

Tipo passaggiHit Count Type
Consente di specificare quando il punto di interruzione diventa effettivo.Specify when the breakpoint takes effect.

ValoreValue DescriptionDescription
AlwaysAlways L'esecuzione viene sempre sospesa al rilevamento di un punto di interruzione.Execution is always suspended when the breakpoint is hit.
Numero di passaggi uguale aHit count equals L'esecuzione viene sospesa quando il punto di interruzione viene rilevato per un numero di volte uguale al numero di passaggi specificato.Execution is suspended when the number of times the breakpoint has occurred is equal to the hit count.
Numero di passaggi maggiore o uguale aHit greater or equal L'esecuzione viene sospesa quando il punto di interruzione viene rilevato per un numero di volte maggiore o uguale al numero di passaggi specificato.Execution is suspended when the number of times the breakpoint has occurred is equal to or greater than the hit count.
Numero di passaggi multiplo diHit count multiple L'esecuzione viene sospesa quando il punto di interruzione viene rilevato per un numero di volte multiplo del numero di passaggi specificato.Execution is suspended when a multiple of the hit count occurs. Se ad esempio questa opzione è impostata su 5, l'esecuzione verrà sospesa ogni cinque volte.For example, if you set this option to 5, execution is suspended every fifth time.

PassaggiHit Count
Consente di specificare il numero di passaggi al raggiungimento del quale attivare un'interruzione.Specify the number of hits at which to trigger a break. Questa opzione non è disponibile se il punto di interruzione è sempre attivo.This option is not available if the breakpoint is always in effect.

Vedere ancheSee Also

Risoluzione dei problemi relativi agli strumenti per lo sviluppo dei pacchettiTroubleshooting Tools for Package Development
Eseguire il debug di uno script impostando punti di interruzione in un'attività e in un componente ScriptDebug a Script by Setting Breakpoints in a Script Task and Script Component