Con questo post elencheremo gli ultimi oggetti presenti nel control flow e ne daremo una breve descrizione.
Partiamo con le
Variables:
chiunque conosca DTS, sa anche cosa intendiamo con il concetto di “
Global Variable”, ovvero quelle variabili tipizzate del pacchetto visibili a tuti e a tutto. Con le “
Variables” di SSIS si introducono alcune sostanziali differenze:
- Le Variables possono essere appartenenti a due namespace:
System (Quelle del pacchetto) e
User (Quelle create dall’utente)
- Le Variables hanno uno “
Scope” ovvero un ambito di validità. Infatti possiamo avere variabili appartenenti ad uno script task, piuttosto che ad un data flow, e via di seguito
- I tipi disponibili per le Variables sono
tipi del frameworkPer visualizzarle è sufficiente premere il tasto destro del mouse e selezionare la voce Variables (Variabili).
Comparirà la seguente finestra
Da notare la barra degli strumenti disponibili. Il primo pulsante crea la variabile, il secondo elimina quella selezionata, il terzo mostra o meno le variabili di sistema, il quarto, se premuto, visualizza le variabili di ogni
scope (viceversa permette la visualizzazione delle sole variabili di scope dell’oggetto selezionato) ed il quinto consente la selezione di colonne aggiuntive sulla griglia sottostante.
L’introduzione del concetto di
scope comporta una maggiore possibilità di errore. Questo perché Visual Studio assegna l'ambito corrispondente all’oggetto selezionato al momento della creazione di una variabile. Ad esempio, se un particolare task chiamato “
Task1” del package “
Prove” è selezionato e se stiamo per creare una variabile, quest’ultima avrà scope “
Task1”. Di conseguenza, bisogna prestare molta attenzione, poiché potremmo accidentalmente creare variabili con lo
stesso nome, ma con scope differenti, credendo erroneamente di agire sulla medesima. La variabile di scope più interno, infatti, viene considerata come se fosse diversa,
ridefinita quindi.
Per risolvere il problema, un mio consiglio è quello di permettere sempre la visualizzazione di tutte le variabili, indipendentemente dallo scope, magari ordinate per nome (semplice click sulla colonna Nome).
Come per DTS anche per SSIS i nomi delle variables sono Case Sensitive.
Per raggiungerle via script, si abbandona la vecchia collection DTSGlobalVariables per usare la Dts.Variables. Ad esempio, consideriamo una variabile chiamata “Var1” di tipo string ed una “Var2” di tipo int32:
Dim MyString As String = Dts.Variables("Var1").Value.ToString()
Dim MyInteger As Int32 = Int32.Parse(Dts.Variables("Var2").Value.ToString())
Ricordiamo sempre di passare allo script task le variabili che utilizzeremo in lettura o in scrittura nello script
Precedence constraints
DTS possedeva già una logica basata su precedence constraints, ma SSIS ha migliorato notevolmente il loro utilizzo. Si impostano sempre tra un task e l’altro, nel control flow, e definiscono ordini e condizioni di esecuzione. I possibili valori di ritorno sono sempre i soliti tre: Success, ovvero task eseguito con successo (verde), Failure, ovvero task eseguito con errore (rosso), Completion, ovvero task completato, indipendentemente dal suo valore di ritorno (blu). Questi tre sono definiti Constraint Value. Per cambiare il valore di un constraint, premere il tasto destro del mouse sulla freccia e selezionare il valore desiderato.
Un fondamentale miglioramento consiste nelle Conditional Expressions. Si tratta di condizioni aggiuntive che vengono associate ad un precedence constraint per determinare ulteriori logiche di successione. Quindi allo stato di esecuzione del task si aggiungono condizioni in più per determinare se il task o i task successivi debbano essere eseguiti. Facendo doppio click sul constraint appare la seguente interfaccia:
Nell’opzione Evaluation Operation (Operazione Valutazione) è possibile selezionare uno dei seguenti valori:
- Constraint (Vincolo), e quindi seguire solo la direzione del constraint ed il suo stato
- Expression (Espressione), e quindi valutare solo l’espressione
- Constraint AND Expression (Vincolo ed espressione), valutare prima il constraint e poi la condizione
- Constraint OR Expression (Vincolo o espressione), valutare o il constraint o l’espressione
Nel caso in cui si utilizzino le ultime due operazioni d valutazione, è possibile indicare l'espressione da valutare a runtime, con sintassi del tutto identica a quella delle expressions.
Ad esempio: @Var2 >5 && @Var2 <= 10
Nell'opzione Value (Valore) si può inoltre definire il valore di ritorno del constraint (quello che si può impostare tramite la pressione del tasto destro sulla freccia).
Con queste innovazioni, gestire il flusso di lavoro, diventa molto più versatile. A volte, in DTS, logiche di questo tipo avrebbero aiutato, e non poco.
Annotations
Una nota finale la meritano anche le Annotations. Si tratta di semplici annotazioni (con la possibilità di definire font e colori) che aiutano a ricordare eventuali passaggi, logiche, problematiche, ecc..
Per aggiungerle è sufficiente premere il tasto destro del mouse in qualunque spazio non occupato da task e selezionare la voce “Add Annotation” (Aggiungi Annotazione)..
Per cambiare le caratteristiche di visualizzazione della nota, premere il destro su di essa e selezionare “Set Annotation Font” (Imposta carattere annotazione testo).
Alla prossima