Condividi tramite


Risoluzione dei problemi relativi all'esecuzione di pacchetti

Data aggiornamento: 12 dicembre 2006

In Integration Services sono disponibili funzionalità e strumenti per la risoluzione dei problemi che possono verificarsi quando si eseguono i pacchetti dopo averli completati e distribuiti.

In fase di progettazione, Business Intelligence Development Studio 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. Queste funzionalità non sono tuttavia disponibili quando si eseguono i pacchetti distribuiti. Le tecniche principali per la risoluzione dei problemi relativi ai pacchetti distribuiti sono le seguenti:

  • Intercettazione e gestione degli errori dei pacchetti tramite gestori degli eventi.
  • Acquisizione dei dati errati tramite output degli errori.
  • Registrazione dei passaggi dell'esecuzione dei pacchetti.

Per evitare problemi relativi all'esecuzione di pacchetti, è inoltre possibile utilizzare le tecniche e i suggerimenti seguenti.

Intercettazione e gestione degli errori dei pacchetti tramite gestori degli eventi

I gestori degli eventi consentono di rispondere ai molti eventi generati dal pacchetto e dai relativi oggetti.

  • Creazione di un gestore dell'evento per l'evento OnError. 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. Per ulteriori informazioni, vedere Gestori di eventi in Integration Services e Creazione di gestori di eventi per i pacchetti.

Risoluzione dei problemi relativi a provider di dati esterni

Molti pacchetti non vengono eseguiti durante le interazioni con provider di dati esterni. I messaggi restituiti a Integration Services dai provider, spesso però non contengono informazioni sufficienti per risolvere i problemi dell'interazione. A questo scopo, Microsoft SQL Server 2005 Service Pack 2 (SP2) include nuovi messaggi di registrazione, utilizzabili per la risoluzione dei problemi relativi all'interazione di un pacchetto con origini dei dati esterne.

  • Abilitare la registrazione e selezionare l'evento Diagnostic del pacchetto per visualizzare i nuovi messaggi per la risoluzione dei problemi. Dalla versione SP2, i componenti Integration Services seguenti possono scrivere un messaggio nel log prima e dopo ogni chiamata a un provider di dati esterno:

    • gestione connessione OLE DB, origine OLE DB e destinazione OLE DB
    • gestione connessione ADO.NET e origine DataReader
    • Attività Esegui SQL
    • Trasformazione Ricerca, trasformazione Comando OLE DB e trasformazione Dimensione a modifica lenta

    I nuovi messaggi del log comprendono il nome del metodo chiamato. Questi messaggi del log, ad esempio, potrebbero comprendere il metodo Open di un oggetto Connection OLE DB o il metodo ExecuteNonQuery di un oggetto Command. I messaggi hanno il formato seguente, dove "%1!s!" è un segnaposto relativo alle informazioni sul metodo:

    ExternalRequest_pre: The object is ready to make the following external request: '%1!s!'.
    ExternalRequest_post: '%1!s!'. The external request has completed.
    

    Per risolvere i problemi relativi all'interazione con il provider di dati esterno, controllare il log e verificare se per ogni messaggio precedente la richiesta (ExternalRequest_pre) è presente un messaggio che segue la richiesta (ExternalRequest_post). Se non è presente alcun messaggio successivo la richiesta, significa che il provider di dati esterno non ha risposto come previsto.
    Di seguito sono riportate alcune righe di esempio di un log contenente i nuovi messaggi di registrazione:

    ExternalRequest_pre: The object is ready to make the following external request: 'ITransactionJoin::JoinTransaction'.
    ExternalRequest_post: 'ITransactionJoin::JoinTransaction succeeded'. The external request has completed.
    ExternalRequest_pre: The object is ready to make the following external request: 'IDbConnection.Open'.
    ExternalRequest_post: 'IDbConnection.Open succeeded'. The external request has completed.
    ExternalRequest_pre: The object is ready to make the following external request: 'IDbConnection.CreateCommand'.
    ExternalRequest_post: 'IDbConnection.CreateCommand finished'. The external request has completed."
    ExternalRequest_pre: The object is ready to make the following external request: 'IDbCommand.ExecuteReader'.
    ExternalRequest_post: 'IDbCommand.ExecuteReader finished'. The external request has completed."
    ExternalRequest_pre: The object is ready to make the following external request: 'IDataReader.GetSchemaTable'.
    ExternalRequest_post: 'IDataReader.GetSchemaTable finished'. The external request has completed."
    ExternalRequest_pre: The object is ready to make the following external request: 'IDataReader.Close'.
    ExternalRequest_post: 'IDataReader.Close finished'. The external request has completed."
    ExternalRequest_pre: The object is ready to make the following external request: 'IDbConnection.Close'.
    ExternalRequest_post: 'IDbConnection.Close finished'. The external request has completed."
    

Risoluzione dei problemi relativi ai dati errati tramite output degli errori

È possibile utilizzare l'output degli errori disponibile in numerosi componenti del flusso di dati per indirizzare le righe contenenti errori a una destinazione distinta, per un'analisi successiva.

  • Acquisizione dei dati errati tramite output degli errori. È possibile inviare le righe contenenti errori a una destinazione distinta, ad esempio una tabella degli errori o un file di testo. 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. Per ulteriori informazioni, vedere Gestione degli errori nei dati e Procedura: Configurazione di un output degli errori in un componente del flusso di dati.
  • Aggiunta di informazioni descrittive agli output degli errori. Per semplificare l'analisi dell'output degli errori, oltre ai due identificatori numerici specificati dall'output stesso è possibile aggiungere informazioni descrittive.
    Aggiunta della descrizione dell'errore. Utilizzando un componente script, è possibile analizzare in modo semplice la descrizione dell'errore. Per ulteriori informazioni, vedere Enhancing an Error Output with the Script Component.
    Aggiunta del nome della colonna di errori. Per informazioni sul nome della colonna corrispondente all'ID di colonna salvato dall'output degli errori non è sufficiente il componente script, ma sono necessarie ulteriori operazioni. Ogni ID di colonna in un flusso di dati è univoco all'interno dell'attività Flusso di dati ed è persistente nel pacchetto in fase di progettazione. L'approccio seguente consente di aggiungere il nome di colonna all'output degli errori:
    1. Creare una tabella di ricerca dei nomi di colonna. Creare un'applicazione separata in cui viene utilizzata l'API di Integration Services per eseguire un'iterazione su ogni pacchetto salvato, ogni flusso di dati nel pacchetto, ogni oggetto nel flusso di dati e ogni input e output nell'oggetto del flusso di dati. Nell'applicazione l'ID di colonna e il nome di ogni colonna devono essere persistenti nella tabella di ricerca, insieme all'ID dell'attività Flusso di dati padre e a quello del pacchetto.
    2. Aggiungere il nome della colonna all'output. Aggiungere all'output degli errori una trasformazione Ricerca che consenta di eseguire una ricerca del nome della colonna nella tabella di ricerca creata al passaggio precedente. Per la ricerca è possibile utilizzare l'ID di colonna nell'output degli errori, l'ID di pacchetto, disponibile nella variabile di sistema System::PackageID, e l'ID dell'attività Flusso di dati, disponibile nella variabile di sistema System::TaskID.

Risoluzione dei problemi relativi all'esecuzione di pacchetti tramite la registrazione

Abilitando la registrazione è possibile tenere traccia di ciò che avviene durante l'esecuzione dei pacchetti. 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.

  • Abilitazione della registrazione. È possibile ottimizzare l'output di registrazione selezionando solo gli eventi e le informazioni che si desidera acquisire. Per ulteriori informazioni, vedere Provider di log di Integration Services e Implementazione della registrazione nei pacchetti.
  • Selezionare l'evento Diagnostic del pacchetto per risolvere i problemi relativi al provider. In SP2 sono presenti nuovi messaggi di registrazione per il supporto della risoluzione dei problemi relativi all'interazione di un pacchetto con origini dei dati esterne. Per ulteriori informazioni, vedere Risoluzione dei problemi relativi a provider di dati esterni in questo argomento.
  • Miglioramento dell'output di registrazione predefinito. La registrazione comporta in genere l'accodamento di righe alla destinazione di registrazione ogni volta che viene eseguito un pacchetto. 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. L'approccio seguente consente di migliorare l'output di registrazione predefinito e semplificare la generazione di report:
    1. Creare una tabella padre per la registrazione di ogni esecuzione di un pacchetto. 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 Services. È possibile utilizzare un'attività Esegui SQL all'inizio di ogni pacchetto per creare questa nuova riga e registrare l'ora di inizio. È quindi possibile utilizzare un'altra attività Esegui SQL alla fine del pacchetto per aggiornare la riga con ora di fine, durata e stato.
    2. Aggiungere informazioni di controllo al flusso di dati. È 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. La trasformazione Controllo rende disponibili nove informazioni, incluse quelle relative a PackageName ed ExecutionInstanceGUID. Per ulteriori informazioni, vedere Trasformazione Controllo. 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. Per ulteriori informazioni, vedere Trasformazione Colonna derivata.
    3. Valutare l'opportunità di acquisire i dati sul conteggio delle righe. 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. Utilizzare la trasformazione Conteggio righe per salvare il conteggio delle righe in una serie di variabili in punti critici del flusso di dati. 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.

Risoluzione dei problemi relativi alla convalida in fase di esecuzione

A volte potrebbe non essere possibile connettersi alle origini dei dati oppure potrebbe non essere possibile convalidare parte dei pacchetti prima di avere eseguito alcune attività nei pacchetti. In Integration Services sono disponibili le funzionalità descritte di seguito che consentono di evitare errori di convalida che verrebbero altrimenti generati a causa delle condizioni seguenti:

  • Configurazione della proprietà DelayValidation per gli elementi del pacchetto non validi quando il pacchetto viene caricato. È possibile impostare la proprietà DelayValidation su True per gli elementi del pacchetto la cui configurazione non è valida, per impedire gli errori di convalida quando il pacchetto viene caricato. 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. La proprietà DelayValidation può essere attivata a livello di pacchetto oppure delle singole attività e dei singoli contenitori del pacchetto.
    La proprietà DelayValidation può essere impostata in un'attività Flusso di dati ma non nei singoli componenti del flusso di dati. È possibile ottenere un risultato simile impostando la proprietà ValidateExternalMetadata dei singoli componenti del flusso di dati su false. Quando, tuttavia, il valore di questa proprietà è impostato su false, il componente non riconosce le modifiche ai metadati delle origini dei dati esterne. Impostando la proprietà ValidateExternalMetadata su true, è possibile evitare problemi causati da blocchi nel database, in particolare quando nel pacchetto vengono utilizzate transazioni.

Risoluzione dei problemi relativi alle autorizzazioni in fase di esecuzione

Se si verificano errori quando si cerca di eseguire pacchetti distribuiti tramite SQL Server, gli account utilizzati potrebbero non disporre delle autorizzazioni necessarie. Per informazioni sulla risoluzione dei problemi per i pacchetti eseguiti dai processi di SQL Server Agent, vedere l'articolo della Knowledge Base Microsoft, An SSIS package does not run when you call the SSIS package from a SQL Server Agent job step. Per ulteriori informazioni sull'esecuzione di pacchetti dai processi SQL Server Agent, vedere Pianificazione dell'esecuzione di pacchetti in SQL Server Agent e Procedura: Esecuzione di un pacchetto tramite un processo di SQL Server Agent.

Risoluzione dei problemi relativi ai componenti a 64 bit

Quando si verificano errori in un server a 64 bit con pacchetti che possono essere eseguiti correttamente in modalità a 32 bit o in server a 32 bit, considerare i problemi comuni seguenti. Per ulteriori informazioni, vedere Considerazioni su Integration Services in computer a 64 bit.

  • Alcuni provider di dati non sono disponibili nella piattaforma a 64 bit. In particolare, il provider OLE DB Microsoft Jet, necessario per la connessione alle origini dei dati di Excel o Access, non è disponibile in una versione a 64 bit.
  • Per essere utilizzati in un computer a 64 bit, gli script devono essere precompilati in un computer a 32 bit. Nei pacchetti in cui vengono utilizzati componenti script o attività Script, la proprietà PreCompile deve essere impostata su True.
  • I pacchetti DTS non possono essere eseguiti in modalità a 64 bit. Se nel pacchetto viene utilizzata l'attività Esegui pacchetto DTS 2000 per eseguire pacchetti DTS (Data Transformation Services) di SQL Server 2000, è necessario eseguire il pacchetto in modalità a 32 bit. Non è disponibile alcun tipo di supporto run-time per i pacchetti DTS.

Risoluzione dei problemi relativi agli errori senza descrizione

Se si verifica un errore di Integration Services a cui non è associata una descrizione, è possibile ottenere la descrizione in Integration Services Error and Message Reference cercando l'errore in base al relativo numero. Al momento, nell'elenco non sono incluse informazioni per la risoluzione dei problemi.

Vedere anche

Attività

Risoluzione dei problemi di sviluppo dei pacchetti

Concetti

Risoluzione dei problemi delle prestazioni dei pacchetti
Risoluzione dei problemi relativi a Integration Services

Guida in linea e informazioni

Assistenza su SQL Server 2005

Cronologia modifiche

Versione Cronologia

12 dicembre 2006

Nuovo contenuto
  • Aggiunta di informazioni relative alla presenza in SQL Server 2005 SP2 di nuovi messaggi di registrazione che consentono agli utenti di risolvere problemi relativi a provider di dati esterni.