Beispiel: Dynamische SQL-Programmierung
Vielen Datenbankentwicklern dürften die erheblichen Einschränkungen bei der dynamischen
SQL-Programmierung in T-SQL bekannt sein. So ist es beispielsweise nicht möglich, den
Tabellennamen dynamisch zu programmieren. Da auch die Parametrisierung von T-SQL-Programmen
etwas problematisch ist, bieten sich Ausdrücke in Variablen als Lösung an.
Im nachfolgenden Beispiel wird der SQL-Befehl einer OLE DB-Quelle dynamisch aus einer Variablen
generiert:
- Legen Sie im Variablenfenster die beiden Variablen "SQL_Befehl" und "Tabelle" mit den in Abbildung 14.7 angegebenen Eigenschaften an.

Abbildung 1: Die Variablen "SQL_Befehl" und "Tabelle"
- Markieren Sie die Variable "SQL_Befehl" und öffnen Sie mit F4 das Eigenschaftsfenster.
- Setzen Sie die Eigenschaft EvaluateAsExpression auf True. Dadurch wird die Eigenschaft
Expression aktiviert.
- Tragen Sie bei Expression ""Select * from " + @Tabelle" ein. Dieser Ausdruck wird als
SQL-Befehl der OLE DB-Quelle verwendet.
- Beim Verlassen der Eigenschaft Expression wird der Ausdruck ausgewertet und das Ergebnis in der Eigenschaft Value hinterlegt. Auch der ValueType wird automatisch ermittelt und eingetragen. Sollte der Ausdruck fehlerhaft sein, wird Ihnen dies angezeigt.

Abbildung 2: Das Eigenschaftsfenster der Variablen
- Schließen Sie das Eigenschaftsfenster.
- Legen Sie in einem Datenfluss eine OLE DB-Quelle an.
- Im Quellen-Editor für OLE DB wählen Sie als Datenzugriffsmodus SQL-Befehl aus Variable aus.
- Als Variablennamen wählen Sie die Variable "Benutzer::SQL_Befehl".

Abbildung 3: Der Quellen-Editor für OLE DB mit den für unser Beispiel
konfigurierten Eigenschaften
Neu angelegte Variablen fehlen manchmal in der Variablenauflistung.
Ist dies der Fall müssen Sie das Paket schließen und erneut aufrufen.
Danach stehen Ihnen alle Variablen zur Verfügung.
Der verwendete SQL-Befehl kann beliebig komplex sein. Einzige Einschränkung ist die
Ausdruckslängenbegrenzung von 4.000 Zeichen.
Der Ausdruck wird bei der Auswahl als Variablenname sofort ausgewertet und
darauf basierend werden die Metadaten ermittelt. Deshalb ist es unbedingt notwendig,
dass die Variable bzw. der Ausdruck zum Zeitpunkt der Paketentwicklung einen gültigen
SQL-Befehl enthält und die richtigen Metadaten erzeugt werden können. Dies gilt auch,
wenn der eigentliche SQL-Befehl dynamisch über andere Variablen oder die Konfiguration
erzeugt wird.
Systemvariablen
Die Integration Services stellen umfangreiche Systeminformationen in Form von
Systemvariablen zur Verfügung. Im Folgenden eine Übersicht der für die Programmierung wichtigsten Systemvariablen:
| Systemvariable |
Datentyp |
Beschreibung |
|
MachineName |
String |
Der Name des Computers, auf dem das Paket ausgeführt wird. |
|
PackageID |
String |
Der eindeutige Bezeichner des Pakets. |
|
PackageName |
String |
Der Name des Pakets. |
|
StartTime |
DateTime |
Der Zeitpunkt, zu dem das Paket gestartet wurde. |
|
UserName |
String |
Das Konto des Benutzers, der das Paket gestartet hat. Der Benutzername wird durch den Domänennamen qualifiziert. |
|
VersionBuild |
nt32 |
Die Paketversion. |
Tabelle 1: Übersicht über die Systemvariablen