Häufig entwickelt man SSIS Pakete gegen eine Entwicklungsdatenbank und steht dann vor der Herausforderung, dass die Pakete nach erfolgreichen Tests und der Abnahme auf das Produktivsystem umgestellt werden müssen. Hier kann es schnell dazu kommen, dass eine Einstellung vergessen wurde oder eine Verbindung noch auf das Testsystem verweist. In jedem Fall ist der manuelle Aufwand, alle Verbindungen umzustellen, merklich.
In dem folgenden Blogbeitrag soll eine Lösung aufgezeigt werden, durch welche das betroffene System zur Laufzeit über den SQL Agenten angepasst werden kann. Voraussetzung für den Einsatz dieser Technologie ist der Integration Services-Katalog des SQL Servers sowie eine konfigurierte Katalog Datenbank: https://msdn.microsoft.com/de-de/library/hh479588.aspx (SSIS DB Konfiguration).
Als Beispiel soll ein rudimentärer Import dienen, das Prinzip lässt sich natürlich auf alle möglichen komplizierten Situationen anwenden.
Beginnen wir damit, einen einfachen Import aufzubauen. Dieser Import wird innerhalb eines Paketbereitstellungsmodell aufgebaut, was bedeutet, dass die Speicherung innerhalb der zentralen SSIS Datenbank stattfindet und die Pakete hier verwaltet werden.
Da wir in unserem Beispiel zwischen den Zieldatenbanken wählen können wollen, die Quelle aber immer identisch sein soll, passen wir die Verbindung der Datenbank an und versehen sie mit der Option „Parameter zu übergeben“.
Innerhalb des sich öffnenden Fensters besteht die Möglichkeit, alle Eigenschaften der Verbindung zu parametrisieren. In dem vorliegenden Fall ist der ConnectionString unser Ziel. Über „Create new parameter“ besteht die Möglichkeit, einen Parameter mit dem aktuell eingestellten Wert zu erzeugen.
Durch Setzen der Option Project lässt sich der Parameter in dem gesamten Project wiederverwenden, zudem sollte der Haken bei „Requiered“ gesetzt werden, um sicherzustellen, dass der Job ein Ziel übergeben bekommt.
Die Parameter in dem Projekt bzw. Paket lassen sich jederzeit unter dem Reiter „Parameter“ wieder-finden. Hier ist ebenfalls ein Hinzufügen, Bearbeiten und Löschen möglich.
Wurden alle Parameter gesetzt und das Paket fertig erstellt, wird es in die Zentrale Datenbank des Servers gespeichert, so dass es in einem späteren Schritt von dem SQL Agenten gefunden werden kann und eine Konfiguration möglich ist.
Innerhalb des Deployment in die SSIS DB müssen einige Einstellungen vorgenommen werden. Wie etwa der Zielserver und die Datenbank, in die das Paket gespeichert werden soll. Beides lässt sich über manuelle Eingabe oder über den Button erledigen.
Nach dem erfolgreichen Deployment finden wir das Projekt in der SSISDB wieder:
Innerhalb des Projektes lassen sich beliebig viele Umgebungen konfigurieren, in dem vorliegenden Beispiel werde ich mich auf zwei Stück beschränken (Entwicklung & Produktiv).
Die Umgebungen halten die Möglichkeit, Variablen für die Umgebung zu setzen vor, auf welche innerhalb einer Zuordnung von Variable (Umgebung) und Parameter (SSIS Paket) zugegriffen werden kann. Im Folgenden wird eine Variable mit dem Namen ConnectionString sowohl innerhalb der Produktivumgebung als auch der Entwicklungsumgebung erzeugt und nur der Initial Katalog wird angepasst. Denkbar wäre an dieser Stelle auch, dass sowohl Katalog als auch Server sich ändern. Dies lässt sich über die Eigenschaften der Umgebungen jederzeit anpassen.
Nach einem Wechsel zu dem Variablenreiter lassen sich die Eigenschaften verändern.
Abbildung 10: Anpassung der Umgebungsvariablen innerhalb des SQL Managementstudio
Nach dem die Variablen in den Umgebungen eingerichtet sind, kann eine Zuordnung zu den inner-halb des SSIS Paket genutzten Parametern stattfinden. Hierfür wird innerhalb der SSISDB die Konfiguration genutzt.
Hier findet für das auszuführende Paket nun die Verbindung von Variable und Parameter statt. Hierfür auf die drei Punkte innerhalb des Parameters klicken.
In dem sich öffnenden Dialog lassen sich die in den Umgebungen eingestellten Variablen wählen.
Nach erfolgreicher Zuordnung und speichern, wird in einem letzten Schritt ein neuer SQL Agent Job erstellt. Auf dem Reiter, in welchem der einzelne Schritt eingerichtet wird, erfolgt der Zugriff auf das hochgeladene und konfigurierte Paket.
Nach Auswahl des Konfigurationsreiters lassen sich nun durch die Auswahl der Umgebung die Parameter zur Laufzeit des SQL Agenten anpassen.
Fazit
Mit relativ wenig Aufwand und den Bordmitteln des SQL Servers lassen sich Pakete sehr schön und schnell für mehrere Systeme wiederverwenden. Vergessenen Konfigurationen von Verbindungen sowohl im Bereich der Datenbank als auch im Bereich der einzulesenden Daten dürfte damit gut entgegengewirkt werden können.