Condividi tramite


Attività Esegui SQL

L'attività Esegui SQL consente di eseguire istruzioni SQL o stored procedure da un pacchetto. L'attività può includere una o più istruzioni SQL che vengono eseguite in ordine sequenziale. È possibile utilizzare l'attività Esegui SQL per gli scopi seguenti:

  • Troncare una tabella o una vista per prepararla per l'inserimento di dati.

  • Creare, modificare ed eliminare oggetti di database come tabelle e viste.

  • Ricreare tabelle dei fatti e delle dimensioni prima di caricarvi i dati.

  • Eseguire stored procedure.

  • Salvare in una variabile il set di righe restituito da una query.

Per configurare l'attività Esegui SQL, procedere nel modo seguente:

  • Specificare il tipo di gestione connessione da utilizzare per la connessione a un database.

  • Specificare il tipo di set di risultati restituito dall'istruzione SQL.

  • Specificare un timeout per l'istruzione SQL.

  • Specificare l'origine dell'istruzione SQL.

  • Indicare se l'attività salta la fase di preparazione per l'istruzione SQL.

  • Se si utilizza il tipo di connessione ADO, è necessario indicare se l'istruzione SQL è una stored procedure. Per gli altri tipi di connessione questa proprietà è di sola lettura e ha sempre valore false.

L'attività Esegui SQL può essere usata in combinazione con i contenitori Ciclo Foreach e Ciclo For per eseguire più istruzioni SQL. Questi contenitori consentono di implementare flussi di controllo ripetuti in un pacchetto e possono eseguire più volte l'attività Esegui SQL. Utilizzando ad esempio il contenitore Ciclo Foreach, il pacchetto può enumerare i file in una cartella ed eseguire ripetutamente un'attività Esegui SQL per elaborare l'istruzione SQL archiviata in ogni file.

Connessione a un'origine dei dati

Per connettersi all'origine dei dati su cui eseguire l'istruzione SQL o la stored procedure, l'attività Esegui SQL può utilizzare diversi tipi di gestione connessione, elencati nella tabella seguente.

Creazione di istruzioni SQL

L'origine delle istruzioni SQL utilizzate da questa attività può essere una proprietà dell'attività che contiene un'istruzione, una connessione a un file che contiene una o più istruzioni oppure il nome di una variabile che contiene un'istruzione. Le istruzioni SQL devono essere scritte nel sottolinguaggio del sistema di gestione di database (DBMS) di origine. Per ulteriori informazioni, vedere Utilizzo di query nei pacchetti.

Se le istruzioni SQL sono memorizzate in un file, per connettersi al file l'attività utilizzerà una gestione connessione file. Per ulteriori informazioni, vedere Gestione connessione file.

In Progettazione SSIS per creare query SQL è possibile digitare le istruzioni nella finestra di dialogo Editor attività Esegui SQL o utilizzare l'interfaccia utente grafica Generatore query. Per ulteriori informazioni, vedere Editor attività Esegui XML (pagina Generale) e Generatore query.

[!NOTA]

L'attività Esegui SQL non è in grado di elaborate correttamente le istruzioni SQL valide scritte al di fuori dell'attività stessa.

Invio di più istruzioni in un batch

Se un'attività Esegui SQL include più istruzioni, sarà possibile raggrupparle ed eseguirle come batch, utilizzando il comando GO per segnalare la fine del batch. Tutte le istruzioni SQL comprese tra due comandi GO vengono inviate in batch al provider OLE DB per l'esecuzione. Il comando SQL può includere più batch separati da comandi GO.

I tipi di istruzioni SQL che è possibile raggruppare in un batch sono soggetti a restrizioni. Per ulteriori informazioni, vedere Batch di istruzioni.

Se l'attività Esegui SQL esegue un batch di istruzioni SQL, al batch verranno applicate le regole seguenti:

  • Può restituire un set di risultati una sola istruzione, che deve essere la prima del batch.

  • Se il set di risultati utilizza associazioni di risultati, le query dovranno restituire lo stesso numero di colonne. Se le query restituiscono numeri di colonne diversi, l'attività avrà esito negativo. Le query eseguite dall'attività, ad esempio DELETE o INSERT, possono tuttavia avere esito positivo anche se l'attività non viene eseguita correttamente.

  • Se le associazioni di risultati utilizzano nomi di colonne, la query dovrà restituire colonne con nomi uguali a quelli del set di risultati dell'attività. Se le colonne non sono presenti, l'attività avrà esito negativo.

  • Se l'attività utilizza un'associazione di parametri, tutte le query incluse nel batch dovranno avere lo stesso numero e gli stessi tipi di parametri.

Esecuzione di comandi SQL con parametri

Le istruzioni SQL e le stored procedure utilizzano spesso parametri di input, parametri di output e codici restituiti. L'attività Esegui SQL supporta parametri di tipo Input, Output e ReturnValue. Il tipo Input viene utilizzato per i parametri di input, il tipo Output per i parametri di output e il tipo ReturnValue per i codici restituiti.

[!NOTA]

È possibile utilizzare parametri in un'attività Esegui SQL solo se il provider di dati li supporta.

Per informazioni sull'utilizzo di parametri e codici restituiti nell'attività Esegui SQL, vedere Utilizzo di parametri e di codici restituiti nell'attività Esegui SQL.

Impostazione del tipo di un set di risultati

A seconda del tipo di comando SQL, all'attività Esegui SQL può essere restituito o meno un set di risultati. Se si utilizzano ad esempio le istruzioni SELECT, viene in genere restituito un set di risultati, mentre questo non avviene per le istruzioni INSERT. Il set di risultati restituito da un'istruzione SELECT può contenere zero, una o più righe. Le stored procedure possono restituire anche un valore integer, detto codice restituito, che indica lo stato dell'esecuzione della procedura. In questo caso il set di risultati è costituito da una sola riga.

Per informazioni sul recupero di set di risultati dai comandi SQL nell'attività Esegui SQL, vedere Utilizzo dei set di risultati nell'attività Esegui SQL.

Voci di log personalizzate disponibili nell'attività Esegui SQL

Nella tabella seguente è indicata la voce di log personalizzata disponibile per l'attività Esegui SQL. Per ulteriori informazioni, vedere Implementazione della registrazione nei pacchetti e Messaggi personalizzati per la registrazione.

Voce di log

Descrizione

ExecuteSQLExecutingQuery

Fornisce informazioni sulle fasi di esecuzione dell'istruzione SQL. Vengono scritte voci di log quando l'attività acquisisce la connessione al database, quando inizia a preparare l'istruzione SQL e al termine dell'esecuzione dell'istruzione SQL. La voce di log per la fase di preparazione include l'istruzione SQL utilizzata dall'attività.

Risoluzione dei problemi relativi all'attività Esegui SQL

È possibile registrare le chiamate eseguite dall'attività Esegui SQL a provider di dati esterni. Questa funzionalità di registrazione può essere utilizzata per risolvere i problemi relativi ai comandi SQL eseguiti dall'attività Esegui SQL. Per registrare le chiamate eseguite dall'attività Esegui SQL a provider di dati esterni, abilitare la registrazione dei pacchetti e selezionare l'evento Diagnostic a livello del pacchetto. Per ulteriori informazioni, vedere Risoluzione dei problemi relativi all'esecuzione di pacchetti.

Talvolta un comando SQL o una stored procedure restituiscono più set di risultati. Tali set di risultati non includono solo set di righe che sono il risultato di query SELECT, ma anche valori singoli che sono il risultato di errori di istruzioni RAISERROR o PRINT. L'attività ignora gli errori nei set di risultati che si verificano dopo il primo set di risultati in base al tipo di gestione connessione utilizzata:

  • Se si utilizzano le gestioni connessioni OLE DB e ADO, l'attività ignora i set di risultati che si verificano dopo il primo set di risultati. Pertanto, con tali gestioni connessioni, l'attività ignora un errore restituito da un comando SQL o da una stored procedure quando l'errore non fa parte del primo set di risultati.

  • Se si utilizzano le gestioni connessioni ODBC e ADO.NET, l'attività non ignora i set di risultati che si verificano dopo il primo set di risultati. Con queste gestioni connessioni, l'attività non riesce e viene restituito un errore qualora un set di risultati diverso dal primo set di risultati contiene un errore.

Configurazione dell'attività Esegui SQL

È possibile impostare le proprietà a livello di programmazione oppure tramite Progettazione SSIS.

Per ulteriori informazioni sulle proprietà che è possibile impostare in Progettazione SSIS, fare clic su uno degli argomenti seguenti:

Per ulteriori informazioni sull'impostazione di queste proprietà in Progettazione SSIS, fare clic sull'argomento seguente:

Configurazione dell'attività Esegui SQL a livello di programmazione

Per ulteriori informazioni sull'impostazione di queste proprietà a livello di programmazione, fare clic sull'argomento seguente:

Icona di Integration Services (piccola) Rimanere aggiornati con Integration Services

Per informazioni sui download, gli articoli, gli esempi e i video Microsoft più recenti, nonché sulle soluzioni selezionate dalla community, visitare la pagina Integration Services su MSDN o TechNet:

Per ricevere notifica automatica su questi aggiornamenti, sottoscrivere i feed RSS disponibili nella pagina.