Integration Services e Global Variables

mercoledì 23 aprile 2008 - 18.20

spettroelica Profilo | Newbie

Salve a tutti,
devi riscrivere un DTS (Sql Server 2000) utilizzando i SSIS (Sql Sertver 2005) e c'è una cosa che non riesco a fare.

Il vecchio DTS aveva due step:
1) SQL Task - legge una tabella dei un database e con il risultato popla una Global Variable con un path di una cartella condivisa.
2) ActiveX Script - legge la Global Variable e cancella tutti i file dalla cartella in questione.

E' vero che avrei potuto fare tutto con un solo ActiveX ma non mi piace accedere ad un database in uno script ActiveX utilizzando oggetti connection.
Visto che gli SQL Task sono la cosa più naturale per accedere ad un db ho adottato questa soluzione.

Il nuovo Package SSIS dovrà fare la stessa cosa.
Mi sembra di capire che in luogo delle Global Variable si possono definire delle Variables e definirgli lo scope (nel mio caso è il package) ma non riesco a capire come caricarla con un SQL Task epoi a leggerla da uno script ActiveX.

Suggerimenti?

alx_81 Profilo | Guru

>Salve a tutti,
Ciao

>E' vero che avrei potuto fare tutto con un solo ActiveX ma non
>mi piace accedere ad un database in uno script ActiveX utilizzando
>oggetti connection.
>Visto che gli SQL Task sono la cosa più naturale per accedere
>ad un db ho adottato questa soluzione.
Hai fatto bene a mio avviso
>
>Mi sembra di capire che in luogo delle Global Variable si possono
>definire delle Variables e definirgli lo scope (nel mio caso
>è il package) ma non riesco a capire come caricarla con un SQL
>Task epoi a leggerla da uno script ActiveX.
Sì, le GlobalVariables sono state sostituite dalle Variables.
ActiveX no, dovrai utilizzare lo Script Task, in codice VB.Net.

Ma puoi evitare completamente di scrivere codice.
Puoi fare un SQL Task che ricava il path, poi un foreach container che cicla sui file ed infine un FileSystem Task al suo interno. Tre task, solo nel control flow.
Ti ho allegato un semplice esempio. Dovrai creare una cartella chiamata 'CartellaFiles' e mettere all'interno i file di prova (io li ho chiamati Prova1.txt, Prova2.txt, ..) sul disco C:\ e poi dovrai creare una tabella sul tempdb con lo script seguente:
USE tempdb; GO CREATE TABLE dbo.Percorsi ( ID int IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED , Percorso varchar(256) NOT NULL ) GO INSERT INTO dbo.Percorsi VALUES ('C:\CartellaFiles') GO

A questo punto potrai eseguire il SSIS allegato.
Ricordati che l'utente con cui esegui il ssis dovrà avere i permessi per eseguire la cancellazione sulla cartella.
Nel caso in cui tu debba fare anche un JOB di SQL per ripetere il lancio del package, puoi leggerti questo mio articolo sull'utilizzo dei Proxy Accounts con SSIS:
http://www.dotnethell.it/articles/SQL-Server-Integration-Services-Proxy-Account.aspx

Comunque, puoi prendere spunto anche dai seguenti link sul mio blog..

Per impostare un SQL Task affinchè valorizzi una Variable (e quindi per attribuire un valore da una colonna di una select)
http://blogs.dotnethell.it/suxstellino/Control-Flow-Tasks-%E2%80%93-Execute-SQL-Task__4001.aspx.

Per lo script task
http://blogs.dotnethell.it/suxstellino/Control-Flow-Task-nuova-carrellata__5311.aspx

Per il FileSystemTask
http://blogs.dotnethell.it/suxstellino/Altri-Task-del-Control-Flow__4148.aspx

Per il For each loop container
http://blogs.dotnethell.it/suxstellino/I-container-ed-il-grouping__5683.aspx

Ciao!
Alx81 =)

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

spettroelica Profilo | Newbie

Grazie mille per la risposta.

In effetti ho notato che gli integration services hanno tutta una serie di componenti in più rispetto ai dts decisamente molto utili come per esempio il For Loop Container e per le mie esigenze è fondamentale l'FTP Task.

Lavorare con SQL Server e i DTs mi è sempre piaciuto ma questi Integration Services sono veramente il massimo.

Ciao e grazie.

alx_81 Profilo | Guru

>Grazie mille per la risposta.
Di nulla!

>Lavorare con SQL Server e i DTs mi è sempre piaciuto ma questi Integration Services sono veramente il massimo.
non sarà sempre uguale il tuo giudizio. Appena incontrerai i difetti, li detesterai, poi ci sarà una fase di ripresa ed infine speranze sui piccoli miglioramenti che renderanno il prodotto veramente buono (già adesso, comunque, seppure giovane è a buon punto )

>Ciao e grazie.
Se ritieni che ti abbia aiutato, accetta la risposta così chiudiamo il thread come confermato.
Grazie a te.
Alx81 =)

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