DTS - Eliminare file

martedì 28 agosto 2007 - 15.00

actarus1981 Profilo | Junior Member

Ciao a tutti,
ho un problema nella generazione di un DTS (in MSSQL server 2000): ho una cartella che contiene alcuni file, e una tabella che contiene alcune informazioni, tra le queli i nomi di tutti i file dentro questa cartella.
Vorrei creare un DTS che elimini tutti i file risultanti da questa query:

SELECT nome_file FROM tabella_file WHERE del=1

--> Esempio:
File nella cartella d:\dati\
- file01.txt
- file02.txt
- file03.txt
- file04.txt

Record in tabella_file
NOME_FILE DEL
file01.txt 0
file02.txt 1
file03.txt 0
file04.txt 1

In questo caso, il task dovrebbe cancellare i file 2 e 3.

Come posso fare?

Grazie

Fabio

lbenaglia Profilo | Guru

>SELECT nome_file FROM tabella_file WHERE del=1
>
>--> Esempio:
>File nella cartella d:\dati\
>- file01.txt
>- file02.txt
>- file03.txt
>- file04.txt
>
>Record in tabella_file
>NOME_FILE DEL
>file01.txt 0
>file02.txt 1
>file03.txt 0
>file04.txt 1
>
>In questo caso, il task dovrebbe cancellare i file 2 e 3.
>
>Come posso fare?

Ciao Fabio,

puoi inserire un ActiveX Script Task che esegue la query, looppa il recordset risultante eliminando i files utilizzando il metodo DeleteFile della classe Scripting.FileSystemObject:

Dim fso Dim rs ' Eseguo la query Set rs = .... ' Istanzio il FileSystemObject Set fso = CreateObject("Scripting.FileSystemObject") Do Until rs.EOF ' Elimino il file specificato fso.DeleteFile rs.Fields("NomeFile").Value rs.MoveNext Loop ' Pulizia rs.Close Set rs = Nothing Set fso = Nothing

>Grazie
Prego.

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

actarus1981 Profilo | Junior Member

Ho inserito questo script:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Ma mi da errore in esecuzione sulla linea della query, riportando un "object required... cosa sbaglio?

lbenaglia Profilo | Guru

> ' Eseguo la query
> Set rs= ("SELECT * FROM DBLIST_file_stra WHERE catpv IN (SELECT
>catpv FROM DBLIST_stato_pv WHERE data_start IS NOT NULL AND risolto=0);")

>Ma mi da errore in esecuzione sulla linea della query, riportando
>un "object required... cosa sbaglio?

Per eseguire una query devi connetterti al db, aprire una connessione.
Una volta connesso utilizza il metodo Execute dell'oggetto ADODB.Connection per sottomettere la query.
Su MSDN trovi tutti i dettagli.

Inoltre trovi un esempio in questo articolo della KB:
http://support.microsoft.com/kb/168336

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

actarus1981 Profilo | Junior Member

Ok, ce l'ho fatta! :-)

Grazie

Fabio
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5