Der SSIS Server in Verbindung mit dem SQL Server Agent bietet viele Möglichkeiten um ein SSIS Paket dynamisch ausführen zu lassen. Über das SQL Server Management Studio können die hochgeladenen (deployten) Pakete organisiert, verwaltet und mit unterschiedlichen Konfigurationen versehen werden.

Struktur eines SSIS Servers

Ein SSIS Server könnte wie folgt aussehen:

 

Das oberste Element des SSIS Servers ist der Integration Services Katalog. Unter diesem Knoten können mehrere (unterschiedliche) Projekte in unterschiedlichen Ordnern organisiert werden. Dabei kann jedes Projekt einer oder mehreren Umgebungen des gleichen Ordners zugeordnet werden. Unsere “Environment 1” könnte die Entwicklungsumgebung sein, bei der der ConnectionString auf die Entwicklungsdatenbank zeigt und die “Environment 2” die Produktivumgebung bei der die produktive Datenbank angesprochen wird.

Jetzt stellen sich die Fragen:

  • “Was passiert, wenn ich meine Umgebungen erweitern möchte um eine Konfiguration für die Qualitätssicherung oder für Tests?”
  • “Was passiert darüber hinaus, wenn ich meine SSIS Pakete, welche sich in der Entwicklung befinden, physisch trennen möchte von meinen produktiven Paketen?”

Ein zäher Mechanismus mit hoher Fehleranfälligkeit beginnt. Über das SQL Server Management Studio müssen händisch zwei neue Umgebungen unterhalb vom Folder 1 angelegt werden und anschließend müssen die vier Umgebungen unterhalb von Folder 2 angelegt werden. Zum Schluss müssen alle Variablen überall eingetragen und gepflegt werden. An dieser Stelle kann uns CIsa unterstützen.

Was ist CIsa?

Mit unserem Modul Ceteris Integration-Services-Automation können genau diese Prozesse automatisiert werden. Die auf Powershell basierenden Funktionen können mit dem SSIS Server interagieren und Objekte anlegen, löschen oder auch Umgebungen kopieren. Für das oben beschriebene Szenario werden nur noch folgende Zeile benötigt.

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Management.IntegrationServices") | Out-Null;
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection "Data Source=.;Initial Catalog=master;Integrated Security=SSPI;"
$IntegrationServices = New-Object "Microsoft.SqlServer.Management.IntegrationServices.IntegrationServices" $SqlConnection

#Frage 1:
Objekt_Folder1 = Get-CIsaFolder -IntegrationServices $IntegrationServices -FolderName "Folder 1"

New-CIsaEnvironment -Folder Objekt_Folder1 -EnvironmentName "QS"
New-CIsaEnvironment -Folder Objekt_Folder1 -EnvironmentName "Tests"

Invoke-CIsaCopyEnvironment "Folder 1" "Environment 1" "Folder 1" "QS"
Invoke-CIsaCopyEnvironment "Folder 1" "Environment 1" "Folder 1" "Tests"

# Frage 2:
Objekt_Folder2 = Get-CIsaFolder -IntegrationServices $IntegrationServices -FolderName "Folder 2"

New-CIsaEnvironment -Folder Objekt_Folder2 -EnvironmentName "Environment 1"
New-CIsaEnvironment -Folder Objekt_Folder2 -EnvironmentName "Environment 2"
New-CIsaEnvironment -Folder Objekt_Folder2 -EnvironmentName "QS"
New-CIsaEnvironment -Folder Objekt_Folder2 -EnvironmentName "Tests"

Invoke-CIsaCopyEnvironment "Folder 1" "Environment 1" "Folder 2" "Environment 1"
Invoke-CIsaCopyEnvironment "Folder 1" "Environment 1" "Folder 2" "Environment 2"
Invoke-CIsaCopyEnvironment "Folder 1" "Environment 1" "Folder 2" "QS"
Invoke-CIsaCopyEnvironment "Folder 1" "Environment 1" "Folder 2" "Tests"

Nur den Startknopf drücken und die Maschine die Arbeit erledigen lassen
Im Nachgang müssen nur noch die Variablen händisch angepasst werden, welche sich geändert haben.
Durch CIsa und insbesondere durch die Kopierfunktion macht es uns wieder Spaß Umgebungen anzulegen.

Darf ICH CIsa benutzen?

JA! CIsa ist auf unserer GitHub Seite  zu finden und kann dort kostenlos heruntergeladen werden.
Dort befinden sich auch weitere Demos und detaillierte Informationen, welche mit der Zeit erweitert werden.