Home
Datenquellen
Controllflow
DataFlow
SSIS
ToC
Impressum
Variablen im SSIS

Variablen speichern Werte in einen SSIS Paket. Die Variablen sind streng typisiert. Das bedeutet, der Wert der zugewiesen wird muss mit dem Datentyp der Variable übereinstimmen. Bei den Variablennamen wird zwischen Groß- und Kleinschreibung unterschieden.

Variablen können zum Beispiel eingesetzt werden:

  • Steuerung von For- und ForEach-Loop
  • als Lookup Tabelle die im Speicher gehalten wird
  • zur Anpassung von SQL Befehlen
  • zur Anpassung der Send Mail Task
  • zur Bildung von Ausdrücken (Expressions), die an verschiedenen Stellen des SSIS Pakets verwendet werden können
  • zur Konfiguration des Pakets, Connection Managers oder einzelner Tasks

SSIS unterstützt zwei Arten von Variablen: Benutzerdefinierte und Systemvariablen.

Benutzerdefinierte Variablen werden vom Entwickler definiert und mit Werten belegt. Der Entwickler kann den Sichtbarkeitsbereich (Scope) der einzelnen Variablen gezielt festlegen. Es steht der Sichtbarkeitsbereich für ein ganzes Paket, ein einzelner Container (ForEach, Loop und Sequence), ein Eventhandler oder eine einzelne Task zur Verfügung. Es können beliebig viele benutzerdefinierte Variablen definiert werden. Die Variable sind immer nur innerhalb des Scopes sichtbar. Zusätzlich sind alle Variablen der darüber liegenden Container sichtbar. Lokale Variablen überlagern Variable mit dem gleichen Namen in einen übergeordneten Container. Damit ist es möglich mehrere Variablen mit dem gleichen Namen aber mit unterschiedlichen Sichtbarkeitsbereichen zu definieren. Denken Sie hier an das gleiche Prinzip wie bei der Programmentwicklung.

Die Systemvariablen sind immer vorhanden. Die Werte werden von der Laufzeitumgebung von SSIS gesetzt. Der Entwickler kann keine zusätzlichen Systemvariablen hinzufügen oder deren Inhalt verändern. Eine Auflistung aller Systemvariablen, geordnet nach Container finden Sie in den BOL unter dem Stichwort System Variables for Packages.

Properties

Standardmäßig stellt SSIS zwei Namespaces User und System zur Verfügung. Es ist möglich den Namespace User umzubenennen oder zusätzliche Namespaces zu erzeugen. Der Namespace System kann nicht verändert werden.

Variables

Jeder benutzerdefinierten Variable kann ein Direktwert oder ein Ausdruck (Expression) zugewiesen werden. Wird ein Ausdruck zur Zuweisung eines Wertes in eine Variable verwendet, so muss bei der Variable die Eigenschaft EvaluateAsExppression auf True gesetzt werden.

Da in SSIS jede Task grundsätzlich in unterschiedliche Threads parallel ausgeführt werden kann, muss beim Zugriff auf die Variablen eine sequenzielle Verarbeitung erzwungen werden. Diese Maßnahme ist nur dann erforderlich, wenn eine Script Task oder eine Script Komponente ausgeführt wird. In allen anderen Fällen kümmert sich die Laufzeitumgebung von SSIS um diese Aufgabe.

Script Task Editor

Wenn eine ganz feine Steuerung der Zugriffe auf die Variablen notwendig ist, dann muss diese aufwendige Technik angewendet werden:

Dim vars As Variables
Dim var As Variable

Dts.VariableDispenser.LockOneForWrite("VsBeginMax", vars)
vars.Item("VsBeginMax").Value = System.DateTime.Now.Year + 5
vars.Unlock()

Dts.VariableDispenser.LockOneForRead("VsBeginMax", vars)
System.Windows.Forms.MessageBox.Show("Value of VsBeginMax: " & _
              vars.Item("VsBeginMax").Value.ToString)

vars.Unlock()

Im Beispiel wird der Variable VsBeginMax der Integerwert vom aktuellen Jahr plus 5 zugewiesen. Dafür ist die Sperranweisung Dts.VariableDispenser.LockOneForWrite("VsBeginMax", vars) notwendig.
Danach wird der Wert mit Hilfe einer MessageBox ausgegeben.
Auch hier muss mit dem Befehl Dts.VariableDispenser.LockOneForRead("VsBeginMax", vars) der Zugriff auf die Variable gesteuert werden. Die Sperre der Variable wird mit vars.Unlock() wieder aufgehoben

In der Regel ist diese extreme feine Steuerung für den Zugriff auf Variablen nicht notwendig.

Script Task Editor

Dazu gibt es eine einfache Methode. In der Script Task oder in der Script Komponente gibt es die beiden Eigenschaften ReadOnlyVariables und ReadWriteVariables. Hier können die Variablen getrennt durch eine Komma angegeben werden.

Die Variablen ohne führendes @ Zeichen angegeben.

Variablen die für ReadWrite gesperrt wurden können gelesen und gesperrt werden. Die Sperre ist für die ganz Verarbeitungszeit der Task gültig.

Der Kode im der Script wird dadurch deutlich übersichtlicher:

Dts.Variables("VsBeginMax").Value = System.DateTime.Now.Year + 5
Dts.Variables("VsBeginMin").Value = System.DateTime.Now.Year - 4

System.Windows.Forms.MessageBox.Show("Value of VsBeginMax: " & _
    Dts.Variables("VsBeginMax").Value.ToString)

Hier finden Sie ein Beispielpaket.
 

Komponentenindex:

  • Scripttask

geändert am 15.4.2006