Der Suche-Task ist innerhalb meiner Projekte mit einer der am häufigsten verwendeten Transformationen; und leider auch der, dessen Bug aus der 2005er Version mich am längsten geärgert hat.
Oder bin ich als einziger auf den Standardwert "<als neue Spalte hinzufügen>" hereingefallen?
Die neue Suche im SQL Server 2008 hat sich gegenüber der 2005er Version in einem wesentlichen Punkt verändert, es existiert jetzt ein Cachemodus.
Wenn in sehr großen Referenztabellen nach Informationen gesucht wird, so kann es vorkommen, das das Laden dieser Daten länger dauert als die eigentliche Suche. Wird in einem Paket an mehreren Stellen auf die gleichen Daten für eine Suche zugegriffen, z.B. über eine Schleife, so werden die Daten jedes Mal wieder vollständig geladen.
Der SQL Server 2008 bietet hierfür 2 Tasks an, die zusammen verwendet werden können. Zum einen den Task “Cachetransformation” und zum anderen den aufgepeppten “Suche” Task.
Mit Hilfe des “Cachetransformation” Tasks ist es möglich Daten aus dem Datenfluss heraus in einer Cachedatei (*.caw) zu speichern, wobei hier zur Optimierung der späteren Suche auch Indexspalten festgelegt werden können bzw. müssen. Dieser Cachemodus wird Vollcache genannt. Innerhalb des “Suche”-Task kann nun diese Cachedatei für die Suche verwendet werden, so dass die entsprechenden Daten nicht wieder vollständig vom Server geladen werden müssen.
Der OLE DB-Verbindungsmanager, der natürlich weiterhin unterstützt wird, bietet an dieser Stelle auch noch die Möglichkeit eines Teil-Caches an. Hierbei werden die Daten zuerst im Cache gesucht, werden Sie dort nicht gefunden, wird die Datenbank gefragt. Existiert dort ein Treffer, so wird dieser zusätzlich auch im Cache gespeichert, so dass bei der nächsten Anfrage die Daten aus dem Cache verwendet werden können. Natürlich bietet die OLE DB-Verbindung auch weiterhin die Möglichkeit ohne einen Cache zu suchen.
Weitere Vorteile, die das Prozedere mit der Cachedatei mit sich bringt, ist die Möglichkeit, nun auch innerhalb eines Datenflusses erstellte/generierte Daten als Referenzen zu verwenden und nicht nur bereits gespeichert Daten sowie natürlich auch die Last auf eventuell stark frequentierte Datenbanken zu reduzieren.
Fehler im Datenfluss?
Eine weitere Neuerung ist der Umgang mit nicht gefundenen Datensätzen. Musste man bei der 2005er Version immer die Fehlerausgabe so um konfigurieren, dass fehlerhafte Zeilen umgeleitet werden, so bietet der “Suche”-Task nun direkt die Möglichkeit, nicht gefundene Datensätze in einen ganz normalen Datenfluss umzuleiten.