Upload file tramite FTP Task - SSIS

SQL Server Integration Services (SSIS) mette a disposizione uno strumento chiamato FTP Task il quale permette di caricare e scaricare file su un sito FTP.

In questo articolo mostrerò come configurare un FTP Task per l'upload di un file; dopo il caricamento del file vero e proprio, viene inviato un secondo file per indicare che il caricamento del primo file è terminato.
Questa operazione è utile nel caso in cui sia presente un automatismo che rileva la presenza di nuovi file caricati ed esegue delle operazioni di conseguenza. In questo modo, la presenza di un file "tappo" conferma il completamento dell'upload per evitare che il processo elabori file che non sono ancora stati caricati del tutto. 

Per cominciare con questo esempio in Visual Studio si crea un nuovo progetto Business Intelligence di tipo Integration Services.

Connection Manager

Per prima cosa bisogna impostare tre Connection Manager: due per i file che si vogliono caricare, uno per il collegamento ftp.
Per aggiungerli si fa clic con il tasto desto nell'area "Connection Manager", poi si seleziona New Flat File Connection per i file oppure New Connection e poi "FTP".

Poi tasto destro >> Edit su ognuna delle connessioni. Per i file è sufficiente impostare il percorso.
Invece per l'FTP si impostano almeno server e  credenziali:

Da questa maschera è anche possibile testare la connessione.

FTP Task

Poi bisogna aggiungere due FTP Task, trascinandoli dalla Toolbox all'area centrale Control Flow.
Per configurarli cliccare con il tasto destro poi Edit.
Sotto la voce General impostare la connessione FTP creata in precendenza.
In File Tranfer impostare il percorso remoto ("/" per caricare nella root), se sovrascrivere file già esistenti, e il percorso locale (che in realtà non è un percorso ma il nome del Flat File Connection creato prima).
I due FTP task avranno le stesse impostazioni, ad eccezione del LocalPath.

Questo è il risultato finale che si ottiene in Visual Studio:

Salvare e cliccare su Start Debugging per vedere il progetto all'opera. 
Per assicurarsi che tutto sia andato a buon fine si può usare un client Ftp come FileZilla. Notare che il file "tappo" (eof.txt) viene uploadato solo dopo che il file vero e proprio (in questo caso chiamato "documento.txt") è stato caricato completamente.

Troubleshooting

In caso di problemi, può essere utile questa checklist:

  • verificare che le credenziali FTP siano corrette
  • disattivare il Firewall di Windows o meglio ancora impostare delle eccezioni sulla porta 21 e sull'eseguibile di Visual Studio (viene proposto in automatico)
  • usare un altro client ftp come FileZilla per assicurarsi che l'FTP funzioni correttamente
  • assicurarsi che ci siano i permessi di scrittura sul percorso di destinazione
  • assicurarsi che sia impostato l'overwrite in caso di file già presenti sul percorso di destinazione
  • se vengono caricati file di 0 Kb, attivare il "passive mode" dalla configurazione del FTP Connection

Autore: Sergio Roberto Boarina