SSIS Parametrisierung – Der schnelle Wechsel zwischen Entwicklungs- und Livesystem

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 Beitrag 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).

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 Beitrag 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.

Abbildung 1 Rudimentärer Importprozess

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“.

Abbildung 2 Parametrisierung der Datenbankverbindung

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.

Abbildung 3 Anpassen des ConnectionString Parameters

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.

Abbildung 4 Parameterreiter

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.

Abbildung 5 Start des Deployment

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.

Abbildung 6 Konfiguration des Deployment

Nach dem erfolgreichen Deployment finden wir das Projekt in der SSISDB wieder:

Abbildung 7 SSIS DB im SQL Managementstudio

Innerhalb des Projektes lassen sich beliebig viele Umgebungen konfigurieren, in dem vorliegenden Beispiel werde ich mich auf zwei Stück beschränken (Entwicklung & Produktiv).

Abbildung 8 Erzeugen einer neuen Umgebung innerhalb des SQL Managementstudio

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.

Abbildung 9 Eigenschaften der Umgebungen innerhalb des SQL Managementstudio

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.

Abbildung 11 Konfiguration des SSIS Paketes innerhalb des SQL Managementstudio

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.

Abbildung 12 Verknüpfung von Variablen und Parametern innerhalb des SQL Managementstudio

In dem sich öffnenden Dialog lassen sich die in den Umgebungen eingestellten Variablen wählen.

Abbildung 13 Auswahl der Variablen innerhalb des SQL Managementstudio

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.

Abbildung 14 Erstellung des SQL Agent Jobs innerhalb des SQL Managementstudio

Nach Auswahl des Konfigurationsreiters lassen sich nun durch die Auswahl der Umgebung die Parameter zur Laufzeit des SQL Agenten anpassen.

Abbildung 15: Einstellung der zu verwendeten Umgebung innerhalb des SQL Managementstudio

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.