Spätestens wenn im Rahmen des eigenen BI-Projekts das zweite Integration Services Paket entwickelt wird, stellt sich die Frage: Wie sollen diese Pakete nächtlich am sinnvollsten auf dem Server ausgeführt werden? Über den altbekannten SQL Server Job Agent? Sequentiell oder Parallel? Gibt es zeitliche oder inhaltliche Abhängigkeiten zu anderen Paketen, die bereits auf dem Server laufen? Wie gut skaliert die Lösung, wenn weitere Pakete, und damit auch Abhängigkeiten, hinzu kommen? Gibt es bezüglich der Anzahl der Pakete, die zur selben Zeit ausgeführt werden können, serverseitige Beschränkungen? Kommen dann noch Themen, wie Mandantenfähigkeit oder Rollout-Szenarien, über mehrere Server hinzu, legt man sich mit statischen Lösungen meist die Karten.

Auf all diese Herausforderungen hat das Job Execution Framework (JEFS) eine Antwort. Das Framework dient dem Management von komplexen ETL Prozessen, die mittels SQL Server Integration Services Paketen implementiert sind. Das Prinzip: ein SSIS Paket, das sogenannte Masterpaket, kümmert sich um die Ausführung der eigentlichen Arbeitspakete. Die gesamten Definitionen der eigentlichen Jobs, und damit auch der Abhängigkeiten zwischen den einzelnen Paketen, liegen in einer Konfigurationsdatenbank und werden zur Laufzeit des Masterpakets dynamisch ausgelesen und verarbeitet. Das Masterpaket kann beliebig oft parallel laufen, um auch verschiedene Jobs parallel ausführen zu können.

Das Framework wurde ursprünglich von unserem ehemaligen Kollegen Christoph Seck entwickelt und von uns im Rahmen verschiedener Kundenprojekte eingesetzt und stetig weiterentwickelt. Ein kurzer Blick auf das dynamische Masterpaket lässt erahnen, welche Komplexität aber auch Funktionsvielfalt das JEFS mittlerweile bietet:

Der Clou: Der Quellcode für das gesamte Framework ist ab sofort frei unter GitHub zu finden! Unter https://github.com/MS-BI/JobExceutionFramework können das Masterpaket sowie die notwendigen Definitionen der Konfigurationstabellen heruntergeladen werden. Wobei eine Dokumentation das Einrichten erleichtert. Der geneigte Leser/Entwickler kann damit ab sofort auf GitHub an dem Projekt teilnehmen, selbst Entwicklungen beitragen oder Feedback geben. Sicherlich ist zu Beginn eines BI-Projektes der gesamte Funktionsumfang des Frameworks ein wenig Overhead, aber die Erfahrung zeigt: Um für die Zukunft gewappnet zu sein, kann es auch in kleineren Projekten Sinn machen von Beginn an auf eine dynamische Lösung zu setzen.