Risoluzione dei problemi relativi agli strumenti per l'esecuzione del pacchettoTroubleshooting Tools for Package Execution

Integration ServicesIntegration Services include funzionalità e strumenti per la risoluzione dei problemi che possono verificarsi quando si eseguono i pacchetti dopo averli completati e distribuiti. includes features and tools that you can use to troubleshoot packages when you execute them after they have been completed and deployed.

In fase di progettazione, SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT) offre punti di interruzione che consentono di sospendere l'esecuzione dei pacchetti, una finestra di stato e visualizzatori dati che consentono di visualizzare il passaggio dei dati nel flusso di dati.At design time, SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT) provides breakpoints to pause package execution, the Progress window, and data viewers to watch your data as it passes through the data flow. Queste funzionalità non sono tuttavia disponibili quando si eseguono i pacchetti distribuiti.However, these features are not available when you are running packages that have been deployed. Le tecniche principali per la risoluzione dei problemi relativi ai pacchetti distribuiti sono le seguenti:The main techniques for troubleshooting deployed packages are as follows:

  • Intercettazione e gestione degli errori dei pacchetti tramite gestori di eventi.Catch and handle package errors by using event handlers.

  • Acquisizione dei dati errati tramite output degli errori.Capture bad data by using error outputs.

  • Registrazione dei passaggi dell'esecuzione dei pacchetti.Track the steps of package execution by using logging.

    Per evitare problemi relativi all'esecuzione di pacchetti, è inoltre possibile utilizzare le tecniche e i suggerimenti seguenti.You can also use the following tips and techniques to avoid problems with running packages

  • Verifica dell'integrità dei dati tramite transazioni.Help to ensure data integrity by using transactions. Per altre informazioni, vedere Transazioni di Integration Services.For more information, see Integration Services Transactions.

  • Riavvio dei pacchetti dal punto di errore tramite checkpoint.Restart packages from the point of failure by using checkpoints. Per ulteriori informazioni, vedere Restart Packages by Using Checkpoints.For more information, see Restart Packages by Using Checkpoints.

Intercettazione e gestione degli errori dei pacchetti tramite gestori di eventiCatch and Handle Package Errors by Using Event Handlers

I gestori degli eventi consentono di rispondere ai molti eventi generati dal pacchetto e dai relativi oggetti.You can respond to the many events that are raised by the package and the objects in the package by using event handlers.

  • Creazione di un gestore dell'evento per l'evento OnError.Create an event handler for the OnError event. Nel gestore dell'evento è possibile utilizzare un'attività Invia messaggi per inviare a un amministratore una notifica dell'errore, utilizzare un'attività Script e la logica personalizzata per ottenere informazioni di sistema per la risoluzione dei problemi oppure eliminare le risorse temporanee o l'output incompleto.In the event handler, you can use a Send Mail task to notify an administrator of the failure, use a Script task and custom logic to obtain system information for troubleshooting, or clean up temporary resources or incomplete output. Per altre informazioni, vedere Gestori eventi di Integration Services (SSIS).For more information, see Integration Services (SSIS) Event Handlers.

Risoluzione dei problemi relativi ai dati errati tramite output degli erroriTroubleshoot Bad Data by Using Error Outputs

È possibile utilizzare l'output degli errori disponibile in numerosi componenti flusso di dati per indirizzare le righe contenenti errori a una destinazione distinta, per un'analisi successiva.You can use the error output available on many data flow components to direct rows that contain errors to a separate destination for later analysis. Per altre informazioni, vedere Gestione degli errori nei dati.For more information, see Error Handling in Data.

  • Acquisizione dei dati errati tramite output degli errori.Capture bad data by using error outputs. È possibile inviare le righe contenenti errori a una destinazione distinta, ad esempio una tabella degli errori o un file di testo.Send rows that contain errors to a separate destination such as an error table or a text file. Tramite l'output degli errori vengono aggiunte automaticamente due colonne numeriche contenenti il numero dell'errore a causa del quale la riga è stata rifiutata e l'ID della colonna in cui si è verificato l'errore.The error output automatically adds two numeric columns that contain the number of the error that caused the row to be rejected, and the ID of the column in which the error occurred.

  • Aggiunta di informazioni descrittive agli output degli errori.Add friendly information to the error outputs. Per semplificare l'analisi dell'output degli errori, oltre ai due identificatori numerici specificati dall'output stesso è possibile aggiungere il messaggio di errore e il nome della colonna.You can make it easier to analyze the error output by adding the error message and the column name in addition to the two numeric identifiers that are supplied by the error output. Per un esempio di come aggiungere queste due colonne supplementari mediante scripting, vedere Ottimizzazione di un output degli errori con il componente script.For an example of how to add these two additional columns by using scripting, see Enhancing an Error Output with the Script Component.

  • In alternativa, ottenere i nomi delle colonne registrando l'evento DiagnosticEx.Or, get the column names by logging the DiagnosticEx event. Questo evento scrive una mappa di derivazione del flusso di dati nel log.This event writes a data flow lineage map to the log. È quindi possibile cercare il nome della colonna in questa mappa di derivazione usando l'identificatore della colonna acquisito da un output degli errori.You can then look up the column name in this lineage map by using the column identifier captured by an error output. Per ulteriori informazioni, vedere Error Handling in Data.For more info, see Error Handling in Data.

    Il valore della colonna di messaggio per DiagnosticEx è testo XML.The value of the message column for DiagnosticEx is XML text. Per visualizzare il testo del messaggio per l'esecuzione del pacchetto, eseguire una query nella vista catalog.operation_messages (database SSISDB).To view the message text for a package execution, query the catalog.operation_messages (SSISDB Database) view. 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.

Risoluzione dei problemi relativi all'esecuzione di pacchetti tramite i report delle operazioniTroubleshoot Package Execution by Using Operations Reports

In SQL Server Management StudioSQL Server Management Studio sono disponibili report delle operazioni standard per facilitare il monitoraggio dei pacchetti di Integration ServicesIntegration Services che sono stati distribuiti nel catalogo di Integration ServicesIntegration Services .Standard operations reports are available in SQL Server Management StudioSQL Server Management Studio to help you monitor Integration ServicesIntegration Services packages that have been deployed to the Integration ServicesIntegration Services catalog. Con i report relativi ai pacchetti è possibile visualizzare lo stato e la cronologia dei pacchetti e, se necessario, identificare la causa di eventuali errori.These package reports help you to view package status and history, and, if necessary, identify the cause of failures.

Per altre informazioni, vedere Risoluzione dei problemi relativi ai report per l'esecuzione del pacchetto.For more information, see Troubleshooting Reports for Package Execution.

Risoluzione dei problemi relativi all'esecuzione di pacchetti tramite viste SSISDBTroubleshoot Package Execution by Using SSISDB Views

Sono disponibili diverse viste di database SSISDB su cui è possibile eseguire una query per monitorare l'esecuzione dei pacchetti e altre informazioni sulle operazioni.A number of SSISDB database views are available that you can query to monitor package execution and other operations information. Per altre informazioni, vedere Esecuzione di pacchetti e altre operazioni di monitoraggio.For more information, see Monitor Running Packages and Other Operations.

Risoluzione dei problemi relativi all'esecuzione di pacchetti tramite la registrazioneTroubleshoot Package Execution by Using Logging

Abilitando la registrazione è possibile tenere traccia di ciò che avviene durante l'esecuzione dei pacchetti.You can track much of what occurs in your running packages by enabling logging. I provider di log consentono di acquisire informazioni sugli eventi specificati da utilizzare per un'analisi successiva e di salvare tali informazioni in una tabella di database, in un file flat, in un file XML o in un altro formato di output supportato.Log providers capture information about the specified events for later analysis, and save that information in a database table, a flat file, an XML file, or another supported output format.

  • Abilitazione della registrazione.Enable logging. È possibile ottimizzare l'output di registrazione selezionando solo gli eventi e le informazioni che si desidera acquisire.You can refine the logging output by selecting only the events and only the items of information that you want to capture. Per altre informazioni, vedere Registrazione di Integration Services (SSIS).For more information, see Integration Services (SSIS) Logging.

  • Selezionare l'evento Diagnostic del pacchetto per risolvere i problemi relativi al provider.Select the package's Diagnostic event to troubleshoot provider issues. Sono presenti messaggi di registrazione per il supporto della risoluzione dei problemi relativi all'interazione di un pacchetto con origini dati esterne.There are logging messages that help you troubleshoot a package's interaction with external data sources. Per altre informazioni, vedere Risoluzione dei problemi relativi alla connettività dei pacchetti degli strumenti.For more information, see Troubleshooting Tools Package Connectivity.

  • Miglioramento dell'output di registrazione predefinito.Enhance the default logging output. La registrazione comporta in genere l'accodamento di righe alla destinazione di registrazione ogni volta che viene eseguito un pacchetto.Logging typically appends rows to the logging destination each time that a package is run. Sebbene ogni riga dell'output di registrazione identifichi il pacchetto in base al nome e all'identificatore univoco e identifichi inoltre l'esecuzione del pacchetto tramite un identificatore ExecutionID univoco, una grande quantità di output di registrazione in un unico elenco può essere difficile da analizzare.Although each row of logging output identifies the package by its name and unique identifier, and also identifies the execution of the package by a unique ExecutionID, the large quantity of logging output in a single list can become difficult to analyze.

    L'approccio seguente consente di migliorare l'output di registrazione predefinito e semplificare la generazione di report:The following approach is one suggestion for enhancing the default logging output and making it easier to generate reports:

    1. Creare una tabella padre per la registrazione di ogni esecuzione di un pacchetto.Create a parent table that logs each execution of a package. In questa tabella padre è inclusa una singola riga per ogni esecuzione di un pacchetto e viene utilizzato l'identificatore ExecutionID per il collegamento ai record figlio nella tabella di registrazione di Integration ServicesIntegration Services .This parent table has only a single row for each execution of a package, and uses the ExecutionID to link to the child records in the Integration ServicesIntegration Services logging table. È possibile utilizzare un'attività Esegui SQL all'inizio di ogni pacchetto per creare questa nuova riga e registrare l'ora di inizio.You can use an Execute SQL task at the beginning of each package to create this new row and to record the start time. È quindi possibile utilizzare un'altra attività Esegui SQL alla fine del pacchetto per aggiornare la riga con ora di fine, durata e stato.Then you can use another Execute SQL task at the end of the package to update the row with the end time, duration, and status.

    2. Aggiungere informazioni di controllo al flusso di dati.Add auditing information to the data flow. È possibile utilizzare la trasformazione Controllo per aggiungere alle righe del flusso di dati informazioni sull'esecuzione del pacchetto che ha creato o modificato ogni riga.You can use the Audit transformation to add information to rows in the data flow about the package execution that created or modified each row. La trasformazione Controllo rende disponibili nove informazioni, incluse quelle relative a PackageName ed ExecutionInstanceGUID.The Audit transformation makes nine pieces of information available, including the PackageName and ExecutionInstanceGUID. Per altre informazioni, vedere Trasformazione Controllo.For more information, see Audit Transformation. Se si desidera includere in ogni riga informazioni personalizzate a scopo di controllo, è possibile aggiungere le informazioni desiderate alle righe del flusso di dati utilizzando una trasformazione Colonna derivata.If you have custom information that you would also like to include in each row for auditing purposes, you can add this information to rows in the data flow by using a Derived Column transformation. Per altre informazioni, vedere trasformazione Colonna derivata.For more information, see Derived Column Transformation.

    3. Valutare l'opportunità di acquisire i dati sul conteggio delle righe.Consider capturing row count data. Prendere in considerazione la creazione di una tabella separata per le informazioni sul conteggio delle righe, in cui ogni istanza di esecuzione di un pacchetto è identificata tramite il relativo ExecutionID.Consider creating a separate table for row count information, where each instance of package execution is identified by its ExecutionID. Utilizzare la trasformazione Conteggio righe per salvare il conteggio delle righe in una serie di variabili in punti critici del flusso di dati.Use the Row Count transformation to save the row count into a series of variables at critical points in the data flow. Al termine del flusso di dati, utilizzare un'attività Esegui SQL per inserire le serie di valori in una riga della tabella, per operazioni successive di analisi e creazione di report.After the data flow ends, use an Execute SQL task to insert the series of values into a row in the table for later analysis and reporting.

      Per altre informazioni su questo approccio, vedere la sezione relativa a registrazione e controllo ETL nel white paper MicrosoftMicrosoft Progetto REAL: progettazione ETL di Business Intelligence.For more information about this approach, see the section, "ETL Auditing and Logging," in the MicrosoftMicrosoft white paper, Project REAL: Business Intelligence ETL Design Practices.

Risoluzione dei problemi relativi all'esecuzione di pacchetti tramite i file di dump del debugTroubleshoot Package Execution by Using Debug Dump Files

In Integration ServicesIntegration Servicesè possibile creare file di dump del debug contenenti informazioni sull'esecuzione di un pacchetto.In Integration ServicesIntegration Services, you can create debug dump files that provide information about the execution of a package. Per altre informazioni, vedere Generazione di file di dump per l'esecuzione del pacchetto.For more information, see Generating Dump Files for Package Execution.

Risoluzione dei problemi relativi alla convalida in fase di esecuzioneTroubleshoot Run-time Validation Issues

A volte potrebbe non essere possibile connettersi alle origini dati o convalidare parte dei pacchetti prima di aver eseguito alcune attività nei pacchetti.Sometimes you might not be able to connect to your data sources, or portions of your package cannot be validated, until prior tasks in the package have executed. Integration ServicesIntegration Services include le funzionalità seguenti per permettere di evitare gli errori di convalida che altrimenti si verificherebbero da queste condizioni: includes the following features to help you avoid the validation errors that would otherwise result from these conditions:

  • Configurazione della proprietà DelayValidation per gli elementi del pacchetto non validi quando il pacchetto viene caricato.Configure the DelayValidation property on package elements that are not valid when the package is loaded. È possibile impostare la proprietà DelayValidation su True per gli elementi del pacchetto con configurazione non valida, per impedire errori di convalida quando il pacchetto viene caricato.You can set DelayValidation to True on package elements whose configuration is not valid, to prevent validation errors when the package is loaded. Potrebbe ad esempio essere presente un'attività Flusso di dati in cui viene utilizzata una tabella di destinazione che non esiste fino a quando non viene creata in fase di esecuzione da un'attività Esegui SQL.For example, you may have a Data Flow task that uses a destination table that does not exist until an Execute SQL task creates the table at run time. La proprietà DelayValidation può essere abilitata a livello di pacchetto oppure delle singole attività e dei singoli contenitori del pacchetto.The DelayValidation property can be enabled at the package level, or at the level of the individual tasks and containers that the package includes.

    La proprietà DelayValidation può essere impostata in un'attività Flusso di dati ma non nei singoli componenti flusso di dati.The DelayValidation property can be set on a Data Flow task, but not on individual data flow components. È possibile ottenere un risultato simile impostando la proprietà ValidateExternalMetadata dei singoli componenti flusso di dati su false.You can achieve a similar effect by setting the ValidateExternalMetadata property of individual data flow components to false. Quando, tuttavia, il valore di questa proprietà è impostato su false, il componente non riconosce le modifiche apportate ai metadati delle origini dati esterne.However, when the value of this property is false, the component is not aware of changes to the metadata of external data sources. Impostando la proprietà truesu ValidateExternalMetadata , è possibile evitare problemi causati da blocchi nel database, in particolare quando nel pacchetto vengono usate transazioni.When set to true, the ValidateExternalMetadata property can help to avoid blocking issues caused by locking in the database, especially when the package is using transactions.

Risoluzione dei problemi relativi alle autorizzazioni in fase di esecuzioneTroubleshoot Run-time Permissions Issues

Se si verificano errori quando si cerca di eseguire pacchetti distribuiti tramite SQL ServerSQL Server , è possibile che gli account usati non dispongano delle autorizzazioni necessarie.If you encounter errors when trying to run deployed packages by using SQL ServerSQL Server Agent, the accounts used by Agent might not have the required permissions. Per informazioni su come risolvere i problemi legati all'esecuzione di pacchetti dai processi di SQL ServerSQL Server Agent, vedere Un pacchetto SSIS non viene eseguito quando viene chiamato da un passaggio di processo di SQL Server Agent.For information on how to troubleshoot packages that are run from SQL ServerSQL Server Agent jobs, see An SSIS package does not run when you call the SSIS package from a SQL Server Agent job step. Per altre informazioni sull'esecuzione di pacchetti da SQL ServerSQL Server Agent, vedere Processi di SQL Server Agent per i pacchetti.For more information on how to run packages from SQL ServerSQL Server Agent jobs, see SQL Server Agent Jobs for Packages.

Per connettersi a origini dati Excel o Access, SQL ServerSQL Server Agent richiede un account con autorizzazione di lettura, scrittura, creazione ed eliminazione dei file temporanei nella cartella specificata dalle variabili di ambiente TEMP e TMP.To connect to Excel or Access data sources, SQL ServerSQL Server Agent requires an account that has permission to read, write, create, and delete temporary files in the folder that is specified by the TEMP and TMP environment variables.

Risoluzione dei problemi relativi ai componenti a 64 bitTroubleshoot 64-bit Issues

  • Alcuni provider di dati non sono disponibili nella piattaforma a 64 bit.Some data providers are not available on the 64-bit platform. In particolare, il provider OLE DB MicrosoftMicrosoft Jet, necessario per la connessione alle origini dati Excel o Access, non è disponibile in una versione a 64 bit.In particular, the MicrosoftMicrosoft Jet OLE DB Provider that is required to connect to Excel or Access data sources is not available in a 64-bit version.

Risoluzione dei problemi relativi agli errori senza descrizioneTroubleshoot Errors without a Description

Se viene generato un errore di Integration ServicesIntegration Services senza descrizione, è possibile individuare la descrizione in Guida di riferimento ai messaggi e agli errori di Integration Services cercando l'errore in base al numero corrispondente.If you encounter an Integration ServicesIntegration Services error that does not have an accompanying description, you can locate the description in Integration Services Error and Message Reference by looking up the error by its number. Al momento, nell'elenco non sono incluse informazioni per la risoluzione dei problemi.The list does not include troubleshooting information at this time.

Debug del flusso di datiDebugging Data Flow

Intervento nel blog relativo all' aggiunta del nome della colonna di errore a un output degli errorinel sito dougbert.com.Blog entry, Adding the error column name to an error output, on dougbert.com.