Dienstag, 24. April 2012

Parameter in der OLE DB Datenquelle

Die OLE DB Datenquelle bietet die Möglichkeit, flexible Abfragen mit Parametern zu verwenden. Nur: in welchem Format geben Sie die Parameter an?
Im folgenden Beispiel verwendet die OLE DB Datenquelle eine gespeicherte Prozedur, um die Daten zu holen. Die Prozedur hat den Namen getNutzerByPLZ und erwartet die beiden Parameter PLZ_von und PLZ_bis.
Das folgende Bild zeigt die Konfiguration der Quelle:

Konfiguration der OLE DB Datenquelle mit gespeicherter Prozedur (2008 R2)

Sie sehen, dass der SQL-Befehl EXEC die Parameter explizit aufführt. Zur Laufzeit wird an jeden Parameter der Wert übergeben, den SSIS für das Platzhalterzeichen ? einsetzt. Welche Werte das sind, konfigurieren Sie durch Anklicken der Schaltfläche "Parameter..." Das folgende Bild zeigt den Dialog:

Binden von SSIS-Variablen an Parameter der gespeicherten Prozedur (2008 R2)

Zur Laufzeit wird der Inhalt der jeweils angegebenen Variablen an den entsprechenden Parameter der gespeicherten Prozedur übergeben. Angenehm bei dieser Schreibweise ist die Tatsache, dass der Editor die Zuordnung der Fragezeichen zu den Namen der Prozedurparameter vornimmt. Das reduziert die Möglichkeit von Konfigurationsfehlern und ermöglicht das nachträgliche Hinzufügen weiterer Parameter ohne großen Aufwand.

Bei SSIS 2012 sieht es etwas anders aus


SQL Befehl mit Parametern bei OLE DB Datenquelle in SSIS 2012
Bindung der Parameter an Variablen in SSIS 2012

Wenn Sie dasselbe bei der 2012er Version versuchen, bekommen Sie jedoch einen Syntaxfehler! Hier dürfen Sie beim EXEC nicht mehr die Namen der Prozedurparameter aufführen (siehe Bild). Da die Parameterzuordnung jedoch auch in dieser Version den Namen der Parameter erwartet, ist dies auch gut - man muss es nur wissen...

Beim SQL Task geht's auch


Dieselbe Art der Parameterübergabe können Sie auch beim Task 'SQL ausführen' in der Ablaufsteuerung verwenden:

Aufruf einer gespeicherten Prozedur mit Parametern im Task 'SQL ausführen'
Konfigurieren der Parameterzuordnung im Task 'SQL ausführen'
Interessanterweise werden in diesem Dialog die benannten Parameter nicht automatisch angeboten, sondern Sie müssen diese von Hand eingeben. Ansonsten ist die Konfiguration aber analog zur OLE DB Datenquelle.