Pacchetto di esempio per l'esecuzione di istruzioni SQL in un ciclo
Il pacchetto di esempio Execute SQL Statements in a Loop utilizza un contenitore Ciclo Foreach per eseguire un'iterazione tramite istruzioni SQL salvate in file di testo all'interno di una cartella. Le istruzioni Transact-SQL creano cinque tabelle nel database AdventureWorks, una per ogni territorio di vendita valido negli Stati Uniti. Il valore dell'insieme per l'enumeratore Foreach File viene mappato a una variabile che viene utilizzata in un'espressione di proprietà per aggiornare il valore della stringa di connessione nella gestione connessione file con ogni enumerazione.
I dati inclusi nel file di testo presentano alcuni problemi: alcuni codici postali sono stati erroneamente interpretati come valori numerici e mancano pertanto gli zeri iniziali, inoltre gli identificatori di alcuni territori di vendita non sono validi. Il flusso di dati nel pacchetto rileva e corregge i codici postali errati, scrive le righe di dati con un territorio di vendita non valido in un file e distribuisce le righe di dati validi a una delle cinque tabelle nel database AdventureWorks.
Quando il pacchetto viene rieseguito, le tabelle vengono troncate prima che vengano inseriti i dati.
Se si esegue l'esempio in una versione di Windows in una lingua diversa dall'inglese, potrebbe essere necessario localizzare il nome della cartella Program Files per aprire o eseguire l'esempio.
Importante: |
---|
Gli esempi vengono offerti esclusivamente a scopo didattico. Non sono progettati per l'utilizzo in un ambiente di produzione e non sono stati testati in un ambiente di produzione. Microsoft non fornisce servizi di supporto tecnico per questi esempi. |
Requisiti
Prima di eseguire questo pacchetto di esempio, verificare che vengano soddisfatte le condizioni seguenti:
- Il pacchetto di esempio e i file di dati da esso utilizzati devono essere installati nell'unità disco rigido locale.
- Aver installato il database AdventureWorks e disporre delle relative autorizzazioni amministrative.
- Se si desidera eseguire il pacchetto di esempio solo dalla riga di comando, è necessario installare SQL Server 2005 Integration Services (SSIS).
- Se si desidera aprire il pacchetto in Progettazione SSIS ed eseguire il pacchetto di esempio, è necessario installare Business Intelligence Development Studio.
Per ulteriori informazioni su come installare gli esempi, vedere l'argomento "Installazione dei pacchetti di esempio di Integration Services" nella documentazione in linea di SQL Server 2005. Per ottenere la versione più recente degli esempi, inclusi nuovi esempi resi disponibili dopo il rilascio di SQL Server 2005, vedere Esempi e database di esempio di SQL Server 2005 (aprile 2006).
Percorso del pacchetto di esempio
Se gli esempi sono stati installati nel percorso di installazione predefinito, il pacchetto di esempio Execute SQL Statements si trova nella cartella seguente:
c:\Programmi\Microsoft SQL Server\90\Samples\Integration Services\Package Samples\ExecuteSQLStatementsInLoop Sample\ExecuteSQLStatementsInLoop\.
I file seguenti sono necessari per poter eseguire questo pacchetto di esempio.
File | Descrizione |
---|---|
ExecuteSQLStatementsInLoop.dtsx |
File del pacchetto. |
Customer.txt |
File di dati di origine. |
CustomersWithInvalidTerritoryID.txt |
File in cui vengono scritti i dati non validi. |
CreateProspectTableTerr1.sql |
Istruzione Transact-SQL che crea la tabella Territory1. |
CreateProspectTableTerr2.sql |
Istruzione Transact-SQL che crea la tabella Territory2. |
CreateProspectTableTerr3.sql |
Istruzione Transact-SQL che crea la tabella Territory3. |
CreateProspectTableTerr4.sql |
Istruzione Transact-SQL che crea la tabella Territory4. |
CreateProspectTableTerr5.sql |
Istruzione Transact-SQL che crea la tabella Territory5. |
Esecuzione dell'esempio
Il pacchetto può essere eseguito dalla riga di comando tramite l'utilità dtexec, oppure può essere eseguito in Business Intelligence Development Studio.
Se si utilizza una versione di Windows in una lingua diversa dall'inglese, potrebbe essere necessario aggiornare la proprietà ConnectionString delle gestioni connessioni file utilizzate nel pacchetto affinché l'esempio possa essere eseguito correttamente. Verificare che il percorso utilizzato nella gestione connessione sia valido sul computer in uso e, se necessario, modificare il percorso per utilizzare la versione localizzata della cartella Program Files.
In questo esempio potrebbe essere necessario aggiornare "Program Files" nella proprietà ConnectionString per le gestioni connessioni CreateTableSQL, Customers e CustomersWithInvalidTerritoryID.
Per eseguire il pacchetto tramite dtexec
Aprire la finestra del prompt dei comandi.
Utilizzare il comando Change Directory, cd, per passare alla directory C:\Programmi\Microsoft SQL Server\90\DTS\Binn, ovvero il percorso in cui si trova dtexec.
Digitare il comando seguente:
dtexec /f "C:\Program Files\Microsoft SQL Server\90\Samples\Integration Services\Package Samples\ExecuteSQLStatementsInLoop Sample\ExecuteSQLStatementsInLoop\ExecuteSQLStatementsInLoop.dtsx"
Premere INVIO.
Per ulteriori informazioni sulla modalità di esecuzione del pacchetto tramite dtexec, vedere l'argomento "Utilità dtexec" nella documentazione in linea di SQL Server 2005.
Per eseguire il pacchetto in Business Intelligence Development Studio
Aprire Business Intelligence Development Studio.
Scegliere Apri dal menu File e quindi fare clic su Progetto/Soluzione.
Individuare la cartella ExecuteSQLStatementsInLoop Sample e fare doppio clic sul file ExecuteSQLStatementsInLoop.sln.
In Esplora soluzioni fare clic con il pulsante destro del mouse su ExecuteSQLStatementsInLoop.dtsx nella cartella Pacchetti SSIS e quindi scegliere Esegui pacchetto.
Importante: |
---|
Se si apre il pacchetto di esempio Execute SQL Statements in a Loop in Progettazione SSIS prima di averlo eseguito per la prima volta, l'attività Flusso di dati include un avviso in quanto le tabelle SQL Server utilizzate dal pacchetto non esistono ancora. Le tabelle vengono infatti create alla prima esecuzione del pacchetto. L'avviso non viene visualizzato se si riapre il pacchetto in Progettazione SSIS dopo averlo eseguito almeno una volta. L'esecuzione del pacchetto ha esito positivo, indipendentemente dall'avviso. |
Componenti inclusi nell'esempio
Nella tabella seguente sono elencati i contenitori, le origini, le trasformazioni, le destinazioni, le gestioni connessioni e le attività Integration Services utilizzati nell'esempio.
Elemento | Descrizione |
---|---|
Ciclo Foreach |
Il contenitore Ciclo Foreach Run SQL Statements utilizza l'enumeratore Foreach File per eseguire un'iterazione dei file che includono istruzioni Transact-SQL. Il contenitore Ciclo Foreach include un'attività Esegui SQL. |
Attività Esegui SQL |
L'attività Esegui SQL Create Tables si connette al database AdventureWorks ed esegue cinque istruzioni Transact-SQL per creare tabelle. |
Attività Flusso di dati |
L'attività Flusso di dati Extract-Clean-Load Data esegue un flusso di dati che estrae i dati da un file di testo, pulisce e distribuisce i dati e quindi li carica in tabelle nel database AdventureWorks. |
Origine file flat |
L'origine file flat Extract Data estrae i dati dal file di testo. |
Trasformazione Suddivisione condizionale |
La trasformazione Suddivisione condizionale Direct Rows by TerritoryID distribuisce le righe a diversi output in base al valore riportato nella colonna TerritoryID. Le righe con valori non validi nella colonna TerritoryID vengono distribuite all'output predefinito. |
Trasformazione Colonna derivata |
La trasformazione Colonna derivata Fix Postal Code corregge i codici postali aggiungendo uno zero iniziale ai codici con quattro caratteri. |
Destinazione OLE DB |
Cinque destinazioni OLE DB caricano i dati in cinque diverse tabelle di territorio. |
Gestione connessione file |
La gestione connessione file Create Tables SQL si connette ai file che includono istruzioni SQL CREATE TABLE. |
Gestioni connessioni file flat |
La gestione connessione file Customers si connette al file di testo che contiene i dati di origine dei clienti. La gestione connessione file CustomsWithInvalidTerritoryId si connette al file di testo in cui vengono scritti i dati non validi. |
Gestione connessione OLE DB |
La gestione connessione OLE DB (local).AdventureWorks si connette al database AdventureWorks sul server locale. |
Risultati dell'esempio
Per visualizzare i risultati dell'esecuzione del pacchetto di esempio Execute SQL Statements in a Loop, aprire una finestra dell'editor di query in SQL Server Management Studio, digitare o copiare la query Transact-SQL seguente e quindi eseguire la query.
SELECT * FROM AdventureWorks.dbo.Territory1
SELECT * FROM AdventureWorks.dbo.Territory2
SELECT * FROM AdventureWorks.dbo.Territory3
SELECT * FROM AdventureWorks.dbo.Territory4
SELECT * FROM AdventureWorks.dbo.Territory5
Questa query recupera i dati estratti dal file di testo e caricati in tabelle SQL Server.