SQL Server ed ALM su database


Il blog di Alessandro Alpi
Archivio Posts
Anno 2018

Anno 2017

Anno 2016

Anno 2015

Anno 2014

Anno 2013

Anno 2012

Anno 2011

Anno 2010

Anno 2009

Anno 2008

Anno 2007

Anno 2006

Ancora control flow

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 framework
Per 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

Categoria: SSIS 2005 Basics
mercoledì, 16 ago 2006 Ore. 16.33
Statistiche
  • Views Home Page: 599.574
  • Views Posts: 1.065.748
  • Views Gallerie: 637.597
  • n° Posts: 484
  • n° Commenti: 273



















Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003