SQL Server & ASP .NET Blog

Interessantes und Wissenswertes

Konfiguration von SSIS-Paketen in SQL Server “Denali”

Wie bereits berichtet gibt es für den SQL Server “Denali” eine neue Projektart für SSIS-Projekte. Bisher wurden Pakete immer einzeln bereitgestellt und es gab dabei die Möglichkeit diese im Dateisystem oder in der msdb zu speichern. Konfigurieren konnte man die Pakete über Variablen, die per XML-Datei aus einer Datenbank oder per Umgebungsvariablen gesetzt wurden.

SSIS in SQL Server “Denali” bringt mit dem Project Deployment die SSISDB, Environments und Parameter ins Spiel. Dazu kurze Stichpunkte:

SSISDB – Zentrale Datenbank zum Speichern, Konfigurieren und für das Logging von SSIS Projekten und Paketen
Environment – Container für eine oder mehrere Variablen, die bei der Ausführung von Paketen gesetzt werden können
Parameter – im Grund eine weitere “Variablenart” in SSIS-Paketen, die beim Aufruf eines Paketes oder eines Projektes gesetzt werden kann

Im Grund funktioniert das Zusammenspiel folgendermaßen:

  1. Ein SSIS-Projekt wird angelegt und Parameter werden definiert
  2. Ein Environment mit einigen Variablen wird angelegt
  3. Das SSIS-Projekt wird auf den Server bereitgestellt (direkt aus Visual Studio in die SSISDB)
  4. bei der Ausführung (Execution) wird für das auszuführende Paket die zu verwendete Environment angegeben, die im Paket hinterlegten Parameter werden konfiguriert und das Paket läuft

Die folgende Grafik zeigt dieses Verhalten noch einmal grob:

image

Damit ist es ein Leichtes mehrere Umgebungen mit unterschiedlichen Parameterwerten für bspw. Entwicklungs-, Test- und Produktivumgebungen zu erstellen und während der Ausführung zwischen diesen umzuschalten.

So viel zur Theorie. In der Praxis sieht dieses Vorgehen folgendermaßen aus: Mehr...

SQL Server “Denali”–Neuheiten in SSIS

Ich habe heute mal testweise die CTP 1, SQL Server “Denali” installiert um ein wenig mit den neuen Features zu “spielen”. Vor allem angetan haben es mir dabei die neuen SSIS-Features – daher hier kurz das Berichtenswerte.

Die Optik

Zunächst einmal – ganz wichtig! Abgerundete Ecken :-) Die Elemente aus der Toolbox werden nun alle mit abgerundeten Ecken dargestellt und das aktuell gewählte Element bekommt einen schönen Schlagschatten. Sieht schick aus – mehr aber auch nicht :-)

image

Veränderungen in der Toolbox

Besonders viel Neues ist mir hier auf den ersten Blick nicht aufgefallen. Es gibt zwei neue “Favoriten”. Einen Destination Assistant und einen Source Assistant.

image

Wählt man einen der beiden aus kann in einem neuen Popup aus bereits vorhandenen Verbindungen ausgewählt werden oder man kann weitere Verbindungen hinzufügen.

image

Neuer Projekttyp und SSISDB

Standardmäßig werden neue Projekte nun in einem neuen SSIS-Projekttyp angelegt. Dieser neue Projekttyp erlaubt eine vollkommen neue Art der Paketkonfiguration und der Bereitstellung auf einem SQL-Server.

Zunächst einmal fällt im Management Studio ein neuer Zweig auf – “Integration Services”. Dort kann mit Create Catalog… eine neue Integration Services Datenbank (“SSISDB”) angelegt werden. Diese Datenbank kümmert sich um die Verwaltung der SSIS-Projekte und um deren Konfiguration.

image

Im Knoten Integration Services können nach Installation der Datenbank alle dort enthaltenen Projekte, Pakete und Konfigurationen bearbeitet werden. Für die Installation muss die Option ‘clr_enable’ aktiviert sein. Ansonsten gilt es nur ein Passwort zu vergeben und einmal OK zu klicken. Die Datenbank erscheint dann mit den neuen GUI Funktionen unterhalb von Integration Services und als “normale” Datenbank unterhalb Databases.

image

Im Screenshot sieht man ein bereitgestelltes SSIS-Projekt mit einem Paket und zwei erstellte Environments – also Ausführungsumgebungen.

Wie die “neue” Konfiguration funktioniert, was genau “Environments” sind und was man sonst so alles tolles mit dem neuen Projekttyp machen kann steht im nächsten Beitrag :-)

SSIS Paketvariablen per Konfigurationsdatei setzen

Im Visual Studio ist es ein leichtes für SSIS-Paketkonfiguration zu erstellen. Einen Überblick darüber gibt dieser Artikel.Nun ist es häufig so, dass die Entwicklungskonfiguration nicht mit der Konfiguration eines Live-Systems überein stimmt (andere Server, Datenbanknamen etc.). Daher ist es in SQL Server 2005/2008 möglich im SQL Server Agent dem Paket eine andere Konfigurationsdatei mitzugeben.

image

Wird hier eine Konfigurationsdatei angegeben, dann werden die Werte aus dieser beim Start des Paketes ausgelesen und auf das Paket angewendet. Also kann ich davon ausgehen, dass vorhandene Entwicklungs-Konfigurationen überschrieben werden… JEIN! Bis SQL Server 2005 stimmt diese Annahme - ab SQL Server 2008 wird anders mit den Konfigurationsdateien umgegangen.

Ab SQL Server 2008 werden zunächst die Werte aus der Entwicklungsumgebung geladen, danach die Konfigurationsdatei geladen – deren Werte gesetzt und danach werden wieder die Werte aus der Entwicklungsumgebung verwendet um diese wieder zu überschreiben. Bedeutet also: Egal welche Konfiguration in der Datei steht – wenn es eine (Konfigurations-)Einstellung in der Entwicklung gab, wird diese zur Laufzeit verwendet… Dieses Verhalten ist hier nachzulesen: http://msdn.microsoft.com/en-us/library/bb500430.aspx

Frage: Wozu dann Konfigurationsdateien?
Antwort: Um zusätzliche Konfigurationen für die Laufzeit vorzunehmen. Ist im Paket für eine Eigenschaft keine Konfiguration vorgesehen, kann diese per Konfigurationsdatei gesetzt werden.

Frage: Wie können dann Konfigurationen für das Überschreiben von Entwicklungskonfigurationen gesetzt werden?
Antwort: Per “SET” Option, also bspw. /SET \Package.Variables[User::fileName].Properties[Value]; siehe auch hier

SSIS – Startobjekt in einem Projekt

Nur ein kleiner Tipp. Beim Debugging von SSIS-Paketen kann innerhalb eines Projektes ein Paket als Startobjekt gewählt werden (durch Rechtsklick und “Set as StartUp Object”). Will man nun ein einzelnes Paket debuggen startet immer dieses Paket. Soll das wieder geändert werden genügt ein Klick in die Projekteigenschaften im Bereich “Debugging”.

startprojekt

Dort kann das Startup Object wieder abgewählt werden, so dass das jeweils aktive Paket gestartet wird.