Gestione degli errori nei datiError Handling in Data

Quando tramite un componente flusso di dati viene applicata una trasformazione ai dati delle colonne, vengono estratti dati dalle origini o vengono caricati dati nelle destinazioni, possono verificarsi errori.When a data flow component applies a transformation to column data, extracts data from sources, or loads data into destinations, errors can occur. Gli errori sono spesso dovuti alla presenza di valori non previsti.Errors frequently occur because of unexpected data values. Una conversione di dati può ad esempio avere esito negativo perché una colonna contiene una stringa anziché un numero, un inserimento in una colonna di database può avere esito negativo perché i dati rappresentano una data mentre la colonna ha un tipo di dati numeric oppure la valutazione di un'espressione può avere esito negativo perché il valore di una colonna è zero e dà luogo a un'operazione matematica non valida.For example, a data conversion fails because a column contains a string instead of a number, an insertion into a database column fails because the data is a date and the column has a numeric data type, or an expression fails to evaluate because a column value is zero, resulting in a mathematical operation that is not valid.

Gli errori rientrano in genere nelle categorie seguenti:Errors typically fall into one the following categories:

  • Errori di conversione dei dati, che si verificano se una conversione comporta la perdita di cifre significative o non significative oppure il troncamento di una stringa.Data conversion errors, which occur if a conversion results in loss of significant digits, the loss of insignificant digits, and the truncation of strings. Gli errori di conversione dei dati si verificano anche quando la conversione richiesta non è supportata.Data conversion errors also occur if the requested conversion is not supported.

  • Errori di valutazione delle espressioni, che si verificano se le espressioni che vengono valutate in fase di esecuzione eseguono operazioni non valide o non risultano sintatticamente corrette a causa di valori mancanti o errati.Expression evaluation errors, which occur if expressions that are evaluated at run time perform invalid operations or become syntactically incorrect because of missing or incorrect data values.

  • Errori di ricerca, che si verificano se un'operazione di ricerca non trova una corrispondenza nella tabella di ricerca.Lookup errors, which occur if a lookup operation fails to locate a match in the lookup table.

    Per un elenco di errori, avvisi e altri messaggi di Integration Services, vedere Guida di riferimento ai messaggi e agli errori di Integration Services.For a list of Integration Services errors, warnings, and other messages, see Integration Services Error and Message Reference.

Usare gli output degli errori per acquisire gli errori a livello di rigaUse error outputs to capture row-level errors

Molti componenti dei flussi di dati supportano output degli errori che consentono di controllare la modalità di gestione degli errori a livello di riga nei dati in ingresso e in uscita.Many data flow components support error outputs, which let you control how the component handles row-level errors in both incoming and outgoing data. È possibile specificare il comportamento che dovrà avere il componente in caso di troncamento o errore impostando opzioni sulle singole colonne di input o di output.You specify how the component behaves when truncation or an error occurs by setting options on individual columns in the input or output. È ad esempio possibile specificare che il componente dovrà generare un errore se il nome di un cliente viene troncato, mentre gli errori relativi ad altre colonne contenenti dati meno importanti potranno essere ignorati.For example, you can specify that the component should fail if customer name data is truncated, but ignore errors on another column that contains less important data.

L'output degli errori può essere connesso all'input di un'altra trasformazione o caricato in una destinazione diversa da quella dell'output non degli errori.The error output can be connected to the input of another transformation or loaded into a different destination than the non-error output. L'output degli errori può ad esempio essere connesso a una trasformazione Colonna derivata che fornisce una stringa per una colonna vuota.For example, the error output can be a connected to a Derived Column transformation that provides a string for a column that is blank.

Nella figura seguente viene illustrato un semplice flusso di dati che include un output degli errori.The following diagram shows a simple data flow including an error output.

Flusso di dati con output degli erroriData flow with error output

Per altre informazioni, vedere Flusso di dati e Percorsi in Integration Services.For more information, see Data Flow and Integration Services Paths.

Configurare la finestra di dialogo di Output degli erroriConfigure Error Output dialog box

Usare la finestra di dialogo Configura output errori per configurare le opzioni di gestione degli errori per le trasformazioni del flusso di dati che supportano l'output degli errori.Use the Configure Error Output dialog box to configure error handling options for data flow transformations that support an error output.

Per altre informazioni sull'utilizzo degli output errori, vedere Gestione degli errori nei dati.To learn more about working with error outputs, see Error Handling in Data.

OpzioniOptions

Input o outputInput or Output
Consente di visualizzare il nome dell'output.View the name of the output.

ColonnaColumn
Consente di visualizzare le colonne di output selezionate nella finestra di dialogo dell'editor trasformazione.View the output columns that you selected in the transformation editor dialog box.

ErroreError
Se applicabile, consente di specificare l'azione da eseguire in caso di errori, ovvero ignorare l'errore, reindirizzare la riga o interrompere il componente.If applicable, specify what should happen when an error occurs: ignore the failure, redirect the row, or fail the component.

Argomenti correlati: Gestione degli errori nei datiRelated Topics: Error Handling in Data

TroncamentoTruncation
Se applicabile, consente di specificare l'azione da eseguire in caso di troncamenti, ovvero ignorare l'errore, reindirizzare la riga o interrompere il componente.If applicable, specify what should happen when a truncation occurs: ignore the failure, redirect the row, or fail the component.

Argomenti correlati: Gestione degli errori nei datiRelated Topics: Error Handling in Data

DescriptionDescription
Consente di visualizzare la descrizione dell'operazione.View the description of the operation.

Imposta questo valore nelle celle selezionateSet this value to selected cells
Consente di specificare l'azione che dovrà interessare tutte le celle selezionate in caso di errore o troncamento: ignorare l'errore, reindirizzare la riga o interrompere il componente.Specify what should happen to all the selected cells when an error or truncation occurs: ignore the failure, redirect the row, or fail the component.

ApplicaApply
Consente di applicare l'opzione di gestione degli errori alle celle selezionate.Apply the error handling option to the selected cells.

Gli errori sono errori o troncamentiErrors are either failures or truncations

Gli errori possono essere suddivisi in due categorie: errori o troncamenti.Errors fall into one of two categories: errors or truncations.

Errori.Errors. Un errore indica un problema certo e genera un risultato NULL.An error indicates an unequivocal failure, and generates a NULL result. Rientrano in questa categoria ad esempio gli errori di conversione dei dati e gli errori di valutazione delle espressioni.Such errors can include data conversion errors or expression evaluation errors. Un errore può essere ad esempio causato dal tentativo di convertire in un numero una stringa che contiene caratteri alfabetici.For example, an attempt to convert a string that contains alphabetical characters to a number causes an error. Le conversioni di dati, le valutazioni delle espressioni e le assegnazioni dei risultati delle espressioni a variabili, proprietà e colonne di dati può avere esito negativo a causa di cast non validi o tipi di dati non compatibili.Data conversions, expression evaluations, and assignments of expression results to variables, properties, and data columns may fail because of illegal casts and incompatible data types. Per altre informazioni, vedere Cast (espressione SSIS), Tipi di dati nelle espressioni di Integration Services e Tipi di dati di Integration Services.For more information see, Cast (SSIS Expression), Integration Services Data Types in Expressions, and Integration Services Data Types.

Troncamenti.Truncations. Un troncamento è meno grave di un errore.A truncation is less serious than an error. Il troncamento genera risultati che possono essere utilizzabili se non addirittura utili.A truncation generates results that might be usable or even desirable. Si può scegliere se considerare i troncamenti come errori o come condizioni accettabili.You can elect to treat truncations as errors or as acceptable conditions. Se ad esempio si inserisce una stringa di 15 caratteri in una colonna con larghezza di un carattere, si può scegliere di troncare la stringa.For example, if you are inserting a 15-character string into a column that is only one character wide, you can elect to truncate the string.

Selezionare un'opzione di gestione degli erroriSelect an error handling option

È possibile configurare la modalità di gestione di errori e troncamenti utilizzata da origini, trasformazioni e destinazioni.You can configure how sources, transformations, and destinations handle errors and truncations. Nella tabella seguente vengono descritte le opzioni disponibili.The following table describes the options.

OpzioneOption DescriptionDescription
Interrompi componenteFail Component Quando si verifica un errore o un troncamento l'attività Flusso di dati viene interrotta.The Data Flow task fails when an error or a truncation occurs. Questa è l'opzione predefinita per errori e troncamenti.Failure is the default option for an error and a truncation.
Ignora erroreIgnore Failure L'errore o il troncamento viene ignorato e la riga di dati viene indirizzata all'output della trasformazione o dell'origine.The error or the truncation is ignored and the data row is directed to the output of the transformation or source.
Reindirizza rigaRedirect Row La riga di dati contenente l'errore o il troncamento viene inviata all'output degli errori dell'origine, della trasformazione o della destinazione.The error or the truncation data row is directed to the error output of the source, transformation, or destination.

Ottenere altre informazioni sull'erroreGet more info about the error

Oltre alle colonne di dati, l'output degli errori include anche le colonne ErrorCode ed ErrorColumn .In addition to the data columns, the error output includes the ErrorCode and ErrorColumn columns. La colonna ErrorCode identifica l'errore, mentre la colonna ErrorColumn contiene l'identificatore di derivazione della colonna degli errori.The ErrorCode column identifies the error and the ErrorColumn contains the lineage identifier of the error column.

In alcune circostanze il valore della colonna ErrorColumn è impostato su zero.Under some circumstances, the value of the ErrorColumn column is set to zero. Questa situazione si verifica quando la condizione di errore interessa l'intera riga anziché una singola colonna,This occurs when the error condition affects the entire row instead of a single column. ad esempio quando nella trasformazione Ricerca una ricerca non riesce.An example is when a lookup fails in the Lookup transformation.

Questi due valori numerici possono avere un'utilità limitata senza la descrizione dell'errore corrispondente e il nome della colonna.These two numeric values may be of limited use without the corresponding error description and column name. Ecco alcuni modi per ottenere la descrizione dell'errore e il nome della colonna.Here are some ways to get the error description and column name.

  • Collegando un visualizzatore dati all'output degli errori è possibile visualizzare sia le descrizioni degli errori che i nomi delle colonne.You can see both error descriptions and column names by attaching a Data Viewer to the error output. In Progettazione SSIS fare clic con il pulsante destro del mouse sulla freccia rossa che indica un output degli errori e scegliere Abilita visualizzatore dati.In SSIS Designer, right-click on the red arrow leading to an error output and select Enable Data Viewer.

  • È possibile trovare i nomi di colonna abilitando la registrazione e selezionando l'evento DiagnosticEx .You can find column names by enabling logging and selecting the DiagnosticEx event. Questo evento scrive una mappa delle colonne del flusso di dati nel log.This event writes a data flow column map to the log. È quindi possibile cercare il nome della colonna dal relativo identificatore in questa mappa delle colonne.You can then look up the column name from its identifier in this column map. Notare che l'evento DiagnosticEx non mantiene gli spazi vuoti nel relativo output XML per ridurre le dimensioni del log.Note that the DiagnosticEx event does not preserve whitespace in its XML output to reduce the size of the log. Per migliorare la leggibilità, copiare il log in un editor XML come Visual Studio, che supporta la formattazione XML e l'evidenziazione della sintassi.To improve readability, copy the log into an XML editor - in Visual Studio, for example - that supports XML formatting and syntax highlighting. Per altre informazioni sulla registrazione, vedere Registrazione di Integration Services (SSIS).For more info about logging, see Integration Services (SSIS) Logging.

    Ecco un esempio di mappa delle colonne del flusso di dati.Here is an example of a data flow column map.

    
    \<DTS:PipelineColumnMap xmlns:DTS="www.microsoft.com/SqlServer/Dts">  
        \<DTS:Pipeline DTS:Path="\Package\Data Flow Task">  
            \<DTS:Column DTS:ID="11" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Output].Columns[Customer]"/>  
            \<DTS:Column DTS:ID="12" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Output].Columns[Product]"/>  
            \<DTS:Column DTS:ID="13" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Output].Columns[Price]"/>  
            \<DTS:Column DTS:ID="14" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Output].Columns[Timestamp]"/>  
            \<DTS:Column DTS:ID="20" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Error Output].Columns[Customer]"/>  
            \<DTS:Column DTS:ID="21" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Error Output].Columns[Product]"/>  
            \<DTS:Column DTS:ID="22" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Error Output].Columns[Price]"/>  
            \<DTS:Column DTS:ID="23" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Error Output].Columns[Timestamp]"/>  
            \<DTS:Column DTS:ID="24" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Error Output].Columns[ErrorCode]"/>  
            \<DTS:Column DTS:ID="25" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Error Output].Columns[ErrorColumn]"/>  
            \<DTS:Column DTS:ID="31" DTS:IdentificationString="Flat File Destination.Inputs[Flat File Destination Input].Columns[Customer]"/>  
            \<DTS:Column DTS:ID="32" DTS:IdentificationString="Flat File Destination.Inputs[Flat File Destination Input].Columns[Product]"/>  
            \<DTS:Column DTS:ID="33" DTS:IdentificationString="Flat File Destination.Inputs[Flat File Destination Input].Columns[Price]"/>  
            \<DTS:Column DTS:ID="34" DTS:IdentificationString="Flat File Destination.Inputs[Flat File Destination Input].Columns[Timestamp]"/>  
        \</DTS:Pipeline>  
    \</DTS:PipelineColumnMap>  
    
  • Si può anche usare il componente Script per includere la descrizione dell'errore e il nome della colonna in altre colonne dell'output degli errori.You can also use the Script component to include the error description and the column name in additional columns of the error output. Per un esempio, vedere Ottimizzazione di un output degli errori con il componente script.For an example, see Enhancing an Error Output with the Script Component.

    • Includere la descrizione dell'errore in una colonna aggiuntiva, usando una singola riga di script per chiamare il metodo GetErrorDescription dell'interfaccia IDTSComponentMetaData100 .Include the error description in an additional column by using a single line of script to call the GetErrorDescription method of the IDTSComponentMetaData100 interface.

    • Includere il nome della colonna in una colonna aggiuntiva usando una singola riga di script per chiamare il metodo GetIdentificationStringByID dell'interfaccia IDTSComponentMetaData100 .Include the column name in an additional column by using a single line of script to call the GetIdentificationStringByID method of the IDTSComponentMetaData100 interface.

      È possibile aggiungere il componente Script al segmento del flusso di dati relativo agli errori in qualsiasi punto a valle dai componenti del flusso di dati di cui si vuole acquisire gli errori.You can add the Script component to the error segment of the data flow anywhere downstream from the data flow components whose errors you want to capture. In genere il componente Script viene posizionato immediatamente prima che le righe con errori vengano scritte in una destinazione.Typically you place the Script component immediately before the error rows are written to a destination. In questo modo lo script cerca solo le descrizioni relative alle righe con errori che vengono scritte.This way, the script looks up descriptions only for error rows that are written. Il segmento del flusso di dati relativo agli errori può correggere alcuni errori e non scrivere tali righe in una destinazione errori.The error segment of the data flow may correct some errors and not write those rows to an error destination.

Vedere ancheSee Also

Flusso di dati Data Flow
La trasformazione dei dati con le trasformazioni Transform Data with Transformations
Connessione di componenti con i percorsi Connect Components with Paths
Attività flusso di dati Data Flow Task
Flusso di datiData Flow