Creazione strumento/tool che scarica un file da server FTP (automatica...

domenica 19 ottobre 2008 - 17.25

roddik1980 Profilo | Junior Member

Ciao a tutti,

devo scaricare in automatico un file excel oppure un file di testo da un server FTP, tutti i giorni ad una determinata ora.
Devo poi automaticamente caricare il file in una tabella di MS Sql Server 2005.

Al momento faccio tutto a mano utilizzando FILEZILLA per scaricare il file in locale e poi lo carico
con l' utility di import di MS Sql Server 2005.

Vorrei automatizzare tutto e schedulare tutto in modo che ad una certa ora della giornata si avvii il processo in automatico.

Come posso fare ???
Secondo voi è bene utilizzare Sql Server Integration Services (SSIS) per creare il processo che va sul server FTP a fare lo scarico ?

Grazie a tutti coloro che vorranno aiutarmi.

Buona giornata e grazie ancora.

Mark


Strumenti a mia disposizione:
- MS Sql Server 2005 (Workgroup Edition)
- Sql Server Integration Services (SSIS)
- Visual Studio 2005 (Professional ed.)
- Access 2003 (con VBA)

lbenaglia Profilo | Guru


>Secondo voi è bene utilizzare Sql Server Integration Services
>(SSIS) per creare il processo che va sul server FTP a fare lo
>scarico ?
Certo, i SSIS sono fatti per questo genere di task

>Grazie a tutti coloro che vorranno aiutarmi.
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

roddik1980 Profilo | Junior Member

Avete un esempio pratico da consigliarmi (sul web) e da cui prendere spunto ?!

Grazie

Mark

alx_81 Profilo | Guru

>Avete un esempio pratico da consigliarmi (sul web) e da cui prendere spunto ?!
Credimi, è piuttosto semplice scrivere un SSIS che deve fare quello che ti serve.
Hai un task a disposizione che è l'FTP Task, esso richiede una connessione FTP.
Quindi devi creare il connection manager di tipo FTP e poi appoggiare sul control flow FTP Task associandolo alla connessione. Lo imposti per scaricare il file che ti serve e definisci il percorso su cui salvare il file. A quel punto, disegni un bel dataflow, definendo anche due connection manager (uno al flat file scaricato da FTP ed uno al db di destinazione) e crei una sorgente Flat File ed una destinazione Oledb.
Per ora posso darti qualche link di riferimento:

Flat File: http://blogs.dotnethell.it/suxstellino/DataFlow-%E2%80%93-La-sorgente-Flat-File__7300.aspx
Connection Managers: http://blogs.dotnethell.it/suxstellino/Designer-e-connection-managers__3936.aspx
FTP Task: http://blogs.dotnethell.it/suxstellino/Altri-Task-del-Control-Flow__4148.aspx
OLEDB Destination: http://blogs.dotnethell.it/suxstellino/I-DataFlow-Le-destinazioni__11815.aspx

Li trovi tutti sul mio blog che leggi sulla firma. C'è anche una categoria un po' più ricca di tips.
Magari se proprio non ci salti fuori, provo a scrivertene uno, ma prova a partire.

>Grazie
di nulla!

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

roddik1980 Profilo | Junior Member

Ok, grazie Alx_81 per le info come al solito.

Ora provo a creare da solo un FTP task semplice e vediamo dove arrivo.......

Ho però 2 grossi dubbi da chiarire prima di iniziare:

1) Il nome del file è dinamico; contiene una sigla fissa e una data/ora (aaaammgghhmm). Come faccio a passare all' FTP task il nome del file con la data del giorno corrente ???

2) Una volta importato il file in una tabella del mio MS SQL Server 2005 Workgroup ed. di rete devo inviare il contenuto di ogni record importato via email (tante singole email, circa 40/50 al giorno), tutto in automatico senza l' intervento dell' operatore, prendendo l' indirizzo email in un' altra tabella. Uso SSIS ????? Quale Task ??? Esempi pratici ???

Buon pomeriggio e grazie per la disponibilità !!!

Mark

alx_81 Profilo | Guru

>Ok, grazie Alx_81 per le info come al solito.
di nulla!

>Ho però 2 grossi dubbi da chiarire prima di iniziare:
>
>1) Il nome del file è dinamico; contiene una sigla fissa e una data/ora (aaaammgghhmm). Come faccio a passare all' FTP task
>il nome del file con la data del giorno corrente ???
Expression sulla variabile del nome del file oppure uno script che valorizza la variabile da passare all'ftp task.
Leggi qui per le expression:
http://blogs.dotnethell.it/suxstellino/Le-Expressions__4228.aspx

>
>2) Una volta importato il file in una tabella del mio MS SQL
>Server 2005 Workgroup ed. di rete devo inviare il contenuto di
>ogni record importato via email (tante singole email, circa 40/50
>al giorno), tutto in automatico senza l' intervento dell' operatore,
>prendendo l' indirizzo email in un' altra tabella. Uso SSIS ?????
>Quale Task ??? Esempi pratici ???
Send EMail Task
http://msdn.microsoft.com/en-us/library/ms142165.aspx

basta definire una connessione SMTP, darla in pasto al task e definire il From e il To..
semplicissimo, credimi..

>Buon pomeriggio e grazie per la disponibilità !!!
Ormai vado a nanna, vista l'ora.
E' un piacere.
ciao!


--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

roddik1980 Profilo | Junior Member

Ciao Alx_81,

nel flusso di controllo del mio SSIS appena creato ho aggiunto un' attività "invia messaggi" per inviare le e-mail in modo automatico come ti ho scritto sopra.

Non riesco a capire come devo fare per passare in modo dinamico l' indirizzo e-mail estratto da una tabella da mettere nel "To", nel "CC" e nel "CCN" !!!

-------------------------------------------------------------------------------------------------------------------------

Altra cosa, visto che mi hai già dato conferma di saperne parecchio di SSIS, Sql Server ecc (mi hai già aiutato in passato, ho visitato il tuo sito, ottimo CV direi) per imparare bene ad utilizzare i SSIS che percorso formativo mi consigli visto che fino ad ora ho agito per esigenze e in modo disordinato ???

Libri ?
Corsi ?
Sul web ?

Tieni presente che ad oggi ho un budget limitato (quindi devo scartare a priori i corsi Microsoft) ma però ho tanta passione e interesse verso questi argomenti:

- SSIS
- Sql Server 2005
- Reporting Services
- Vb.net
- Asp.net
- C#

Grazie

Mark

alx_81 Profilo | Guru

>Ciao Alx_81,
Ciao!

>nel flusso di controllo del mio SSIS appena creato ho aggiunto
>un' attività "invia messaggi" per inviare le e-mail in modo automatico
>come ti ho scritto sopra.
>Non riesco a capire come devo fare per passare in modo dinamico
>l' indirizzo e-mail estratto da una tabella da mettere nel "To",
>nel "CC" e nel "CCN" !!!
Come ti dicevo, tramite le EXPRESSIONS..

1120x651 60Kb


Come puoi notare ogni proprietà è mappata ad una variabile tramite il menu Espressioni.
Con un Execute SQL Task (http://blogs.dotnethell.it/suxstellino/Control-Flow-Tasks-%E2%80%93-Execute-SQL-Task__4001.aspx) basta selezionare i campi che ti servono, associarli alle variabili, cosicchè poi il Send Email Task legga i valori dalle variabili ricavate dall'SQL.
Quindi:

- Crei un connection manager al SQL dove vuoi reperire i dati della email
- Crei un connection manager al SMTP per l'invio email
- Crei n variabili, una per ogni proprietà del send email da valorizzare
- Mappi la chiamata SQL alle variabili tramite un Execute SQL Task con tipo di SingleRow
- Crei le tre espressioni di mapping alle proprietà del Send Email Task
ed il gioco è fatto.
Fai attenzione perchè se inizialmente la variabili sono vuote il Send Email Task potrebbe fallire la validazione (No recipient specified). E' sufficiente impostare la proprietà DelayValidation del Send Email Task a true, in modo che la validazione venga eseguita a runtime.

>Altra cosa, visto che mi hai già dato conferma di saperne parecchio
>di SSIS, Sql Server ecc (mi hai già aiutato in passato, ho visitato
>il tuo sito, ottimo CV direi)
Grazie

>per imparare bene ad utilizzare i SSIS che percorso formativo mi consigli visto che fino ad ora
>ho agito per esigenze e in modo disordinato ???
Eh che posso dirti? Scontato.. leggi il mio blog nelle sezioni BASIC:

SSIS 2005 Basics
http://blogs.dotnethell.it/suxstellino/Category_799.aspx

SSIS 2008 Basics
http://blogs.dotnethell.it/suxstellino/Category_2258.aspx

Tips su SSIS 2005
http://blogs.dotnethell.it/suxstellino/Category_791.aspx

Se le leggi in ordine secondo me qualcosa ti dà..
Ma prima di tutto, capisci il parallelismo con la vecchia interfaccia (DTS).
E quindi ti invito a leggere anche qualche mio articolo.. intanto che ci sono

http://www.alessandroalpi.net/articoli.aspx

tranne l'ultimo, gli altri possono esserti di aiuto. Comunque ti consiglio di partire dai seguenti due:

Overview SSIS
http://www.dotnethell.it/articles/SSIS-SQL-Server-Integration-Services.aspx

Parallelismo SSIS - DTS
http://www.microsoft.com/italy/technet/prodtechnol/sql/2005/ssis_dts.mspx

e poi passare a questi 3:

Logging, che serve sempre..
http://go.microsoft.com/?linkid=8972246

Transazioni con SSIS
http://go.microsoft.com/?linkid=8972245

Debug con dataviewer di SSIS
http://go.microsoft.com/?linkid=8972247

E ovviamente non tralasciare mai i BOL (Books OnLine) partendo da questo link:
http://technet.microsoft.com/it-it/library/ms141026.aspx

>Libri ?
Di libri buoni non ne ho trovati molti.. ne avevo uno della WROX.. ma proprio da lasciar perdere..

>Corsi ?
Se vuoi..

>Tieni presente che ad oggi ho un budget limitato (quindi devo scartare a priori i corsi Microsoft) ma però ho tanta passione e interesse verso questi argomenti:
>
>- SSIS
E qui siamo a posto dai, l'esperienza vedrai che con i link che ti ho dato aumenterà (soprattutto i tips su casi reali)

>- Sql Server 2005
Per SQL invece ti consiglio la collana Inside SQL Server:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=23061

e i BOL, da tenere SEMPRE in considerazione
http://msdn.microsoft.com/en-us/library/ms130214.aspx

>- Reporting Services
Pro SQL Server Reporting Services 2005
http://www.amazon.com/Pro-Server-2005-Reporting-Services/dp/1590594983

>- Vb.net
Eh qui.. andiamo sul difficile.. Ce ne sono tanti..
Io rimarrei sulla MSpress:

VB 2005
http://www.amazon.com/Microsoft-Visual-Basic-2005-Step/dp/0735621314/ref=sr_1_1?ie=UTF8&s=books&qid=1224638781&sr=1-1

VB 2008
http://www.amazon.com/Microsoft-Visual-Basic-2008-Step/dp/0735625379/ref=sr_1_1?ie=UTF8&s=books&qid=1224638815&sr=1-1

>- Asp.net

Asp.Net 3.5
Dino Esposito (il nostro guru di asp.net):
http://www.amazon.com/Programming-Microsoft-ASP-NET-Dino-Esposito/dp/0735625271/ref=sr_1_1?ie=UTF8&s=books&qid=1224638857&sr=1-1
http://www.amazon.com/Microsoft-ASP-NET-3-5-Step/dp/0735624267/ref=sr_1_2?ie=UTF8&s=books&qid=1224638857&sr=1-2

Asp.Net 2.0
Dino Esposito:
http://www.amazon.com/Programming-Microsoft-ASP-NET-Core-Reference/dp/0735621764/ref=sr_1_3?ie=UTF8&s=books&qid=1224638857&sr=1-3
http://www.amazon.com/Microsoft-ASP-NET-2-0-Step/dp/0735622019/ref=sr_1_4?ie=UTF8&s=books&qid=1224638857&sr=1-4

>- C#
C# 2005
http://www.amazon.com/Microsoft%C2%AE-Visual-2005-Step-Microsoft/dp/0735621292/ref=sr_1_2?ie=UTF8&s=books&qid=1224638971&sr=1-2

C# 2008
http://www.amazon.com/Microsoft-Visual-C-2008-Step/dp/0735624305/ref=sr_1_1?ie=UTF8&s=books&qid=1224638971&sr=1-1

>Grazie
di nulla!
Magari scrivi nell'area .net framework per vedere se qualcuno ti consiglia meglio i libri più da Developer..
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5