Kontakt  Impressum 
 
       Navigationslinks überspringen.   

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:
  1. 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"

  2. Markieren Sie die Variable "SQL_Befehl" und öffnen Sie mit F4 das Eigenschaftsfenster.
  3. Setzen Sie die Eigenschaft EvaluateAsExpression auf True. Dadurch wird die Eigenschaft Expression aktiviert.
  4. Tragen Sie bei Expression ""Select * from " + @Tabelle" ein. Dieser Ausdruck wird als SQL-Befehl der OLE DB-Quelle verwendet.
  5. 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

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


  10. 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