In questo post parleremo dei seguneti task del control flow di Integration Services:
- Execute Process Task
- Execute Package Task
- File System Task
- FTP TaskExecute Process TaskL'Execute Process Task permette di eseguire applicazioni Windows o console. A differenza dell'omonimo presente nei DTS, questo task ha una migliore gestione dell'errore. Ad esempio, è possibile scrivere gli errori all'interno di una variabile del pacchetto per poi testarne il contenuto successivamente.
Come al solito l'editor che si presenta è suddiviso in sezioni, la prima delle quali è la
General. In essa vi sono le informazioni generali del task, che non modificano il suo comportamento (nome, descrizione). La pagina più interessante è quella denominata
Process. Al suo interno vi sono alcune proprietà da prendere in considerazione.
RequiredFullFileName, se impostata a true, impone di immettere nella proprietà
Executable il percorso completo dell'eseguibile. Se impostata a false permette di indicare nella
Executable il nome semplice del file.
N.B. se si utilizza questo ultimo metodo è necessario che il file da eseguire sia residente in uno dei path definiti nella variabile di sistema
PATH di Windows (nelle variabili d'ambiente).
Nella proprietà Executable non possono essere indicati parametri da passare all'eseguibile. Per questi vi è la proprietà
Arguments.
Altra voce importante è
WorkingDirectory, che permette di impostare la cartella dove lavora il file che andremo ad eseguire.
Poi troviamo due proprietà che consentono di rendere il task dinamico, e sono la
StandardInputVariable, che permette di passare al pacchetto una variabile come argomento,
StandardOutputVariable, che consente di catturare il risultato di ritorno del processo, e
StandardErrorVariable, in cui viene scritto l'eventuale errore ritornato dal processo.
Infine vi sono altre proprietà di minore importanza, come la
FailTaskIfReturnCodeIsNotSuccess, che impone al task di fallire se l'exit code è diverso da quello impostato nell'opzione
SuccessValue, la
TimeOut, che permette di impostare un numero di secondi per il timeout del processo (default a 0, durata infinita), la
TerminateProcessAfterTimeOut, che impone al processo di terminare se il timeout è stato superato, e la
WindowStyle, che consente di definire come eseguire il processo,
Minimized, Maximized, hidden o
Normal.
Execute Package TaskEsegue un package figlio da un package padre. Anche nei DTS era presente un task simile, ma nella versione 2005 è stato di molto semplificato. Innanzitutto nell'ultima versione vi è una proprietà molto importante, la
ExecuteOutOfProcess, che permette di definire se il pacchetto viene lanciato al di fuori del processo del padre, e quindi in uno spazio di memoria riservato a se. Se è impostata a true, si occuperà maggiore quantità di memoria ma le prestazioni saranno comunque superiori.
Siccome i package possono risiedere sia su filesystem che sullo storage di SQL server, è necessario specificare la locazione dei SSIS da lanciare. Le possibilità, nella proprietà
Location, sono quindi due:
File system o
SQL Server. Nel primo dei casi è necessario aver creato prima un connection manager su File System. Nel secondo caso è necessario puntare all'OLEDB del SQL Server che contiene i pacchetti.
N.B. La grande differenza con i DTS è che non è più necessario impostare dei parametri da passare al package figlio, poichè quest'ultimo, tramite le configurazioni fornite dai SSIS, è in grado di reperire la variabili direttamente dal padre.
File System TaskIn un processo ETL nasce spesso l'esigenza di dover creare, cancellare, spostare, copiare file o cartelle. Tutte queste operazioni erano possibili nei DTS, ma ciò richiedeva la scrittura di codice (via ActiveX Script) in punti diversi del pacchetto. Con SSIS vi è ora il
FileSystem task, che permette ogni tipo di gestione di file e cartelle. Dalle operazioni di cancellazione, creazione, spostamento, copia su file e cartelle all'impostazione degli attributi degli oggetti del filesystem.
La sezione più importante è la
General, che contiene tutte le seguenti opzioni.
L'interfaccia che si presenta cambia in base al tipo di operazione che si decide di effettuare.
Ad esempio, se si eseguono operazioni per cui una destinazione è necessaria (ad esempio lo spostamento), esiste la proprietà
IsDestinationPathVariable che impone di definire alla voce
DestinationVariable, la variabile contenente la destinazione dell'operazione. Da considerare anche la proprietà
OverwriteDestination che, se impostata a true, consente la sovrascrittura del file di destinazione, nel caso esso esista già.
Lo stesso comportamento delle proprietà relative alla destinazione hanno la
IsSourcePathVariable e la
SourceVariable, ovviamente riferite alla sorgente.
FTP TaskConsente di ricevere o inviare file via FTP e addirittura cancellare file e cartelle (locali o remoti). In SQL Server 2000 era possibile solo inviare file.
Nella sezione
General è possibile impostare il connection manager del sito FTP da raggiungere, mentre nella sezione
File Transfer si possono definire tutte le proprietà relative alla sessione FTP. Come il File System Task, anche l'
FTP Task permette di impostare i percorsi (locali o remoti) tramite variabili del pacchetto.
Le proprietà sono la
IsRemotePathVariable/
IsLocalPathVariable e le rispettive
RemoteVariable/
LocalVariable, con la conseguente
OverwriteFileAtDest. Tutte queste proprietà sono configurabili in base al valore della proprietà
Operation, che indica la tipologia di operazione da eseguire:
- Invia file
- Ricevi file
- Crea directory locale
- Crea directory remota
- Rimuovi directory locale
- Rimuovi directory remota
- Elimina file locali
- Elimina file remotiInfine, esiste una proprietà utile, la
IsTransferAscii, che permette di impostare la possibilità di trasportare file in formato ASCII.
Questa era una carrellata di altri task del control flow, alla prossima per un altro elenco di task..
stay tuned