Bei der Integration verschiedenster Quellen mit Hilfe der Integration Services des SQL Server 2005/2008 kommt es durchaus vor, dass man es mit ODBC-Quellen zu tun hat, die man nur mit Hilfe einer DataReader-Verbindung auslesen kann. Möchte man seine Abfragen an die Quelle parametrisieren, stößt man allerdings schnell an die Grenzen des DataReaders: während Anfragen an OLE DB-Quellen ohne weiteres parametrisiert werden können, gibt es hier keinen offensichtlichen Weg.
Folgendes Beispiel illustriert das Problem: die Einschränkung auf das SellStartYear soll hier über einen externen Parameter gesteuert werden.
Der Editor bietet weder die direkte Parametrisierung der Anfrage, noch eine indirekte durch Übergabe eines Strings als SQL-Kommando.
Abhilfe schafft hier nur folgender Trick:
Der Datenfluss, in dem die Quelle enthalten ist bietet in seinen Eigenschaften die Konfiguration verschiedener Werte über Expressions.
Hier lassen sich unter anderem die SQL-Kommandos aller enthaltenen Quellen über Expressions steuern. In unserem Beispiel wäre das die Eigenschaft [Data Reader Source].[SQLCommand]. Zu beachten ist hierbei nur, dass die Name-Eigenschaft der Quelle (in diesem Fall „Data Reader Source”) statisch sein muss. Nun kann man die SQL-Abfrage über den Expression-Editor beliebig parametrisieren.
In unserem Fall haben wir das Jahr in eine String-Variable ausgelagert, die wir beliebig dynamisch halten können.
Damit man nicht den Überblick verliert, bietet sich die Expression Highlight Funktion des BIDS-Helper an. Dieser markiert den Datenfluss nach erfolgreicher Konfiguration mit einem magentafarbenen Dreieck. So sieht man sofort, hinter welchen SSIS-Objekten sich Expressions verbergen.
Derselbe workaround funkioniert auch für die ADO.NET-Quellen in den Integration Services des SQL Server 2008. Hier wurde zwar der Editor optisch auf das Level der OLE DB-Quellen gebracht, an der fehlenden Funktionalität bezüglich der Parametrisierung hat sich aber leider nichts geändert.