Sandra Erb

In den ersten beiden Teilen meiner Serie habe ich gezeigt, wie SSIS Projekte und Environments mit der Power Shell deployed werden können. Nun möchte ich auf die Bereitstellung von Datenbankprojekten eingehen.

In vielen unserer Projekte verwenden wir SQL Server Data Tools (SSDT) zur Modellierung der Datenbanken. Daher benötigt das hier vorgestellte Vorgehen die dacpac-Datei, welche beim Build der SSDT Solution erstellt wird. Alternativ könnten auch einzelne SQL-Scripte über die Power Shell gegen die gewünschte Datenbank ausgeführt werden.

SSDT ist bereits ein mächtiges Tool. Und auch das Deployment kann direkt aus dem Visual Studio heraus ausgeführt werden. Jedoch haben wir eine Hürde zu überwinden, wenn der Administrator nicht über ein Visual Studio mit Data Tools verfügt.

Stattdessen kann auf Basis von SSDT bzw. der dacpac-Datei ein Deltascript erstellt werden, das gegen die Zieldatenbank ausgeführt wird. Genau diese Schritte automatisiert das im Folgenden dargestellte PowerShell-Script.

Parameter erstellen

Wir erstellen einige Parameter, um das Script universell verwenden zu können. Dabei werden der Name des Zielservers und der Ablageort der dacpac-Datei(en) abgefragt:

Generierung des Deltascriptes aus SSDT

Für die Generierung des Delta-Scriptes wird das Kommandozeilen-Tool SqlPackage verwendet.  Dieses liegt standardmäßig im Verzeichnis C:\Program Files (x86)\Microsoft SQL Server\<SQL Server Version>\DAC\bin. Die Einstellungen sollten den eigenen Bedürfnissen angepasst werden. Eine ausführliche Übersicht aller Einstellungen findet sich in der MSIDN: https://msdn.microsoft.com/en-us/library/hh550080%28v=vs.103%29.aspx.

Die Datenbankprojekte tragen bei uns den Namen der Zieldatenbank. Sollte dies nicht der Fall sein, darf im Script nicht der Name des dacpacs verwendet werden.

Ausführung des Deltascriptes

Das oben generierte Script kann nun manuell geprüft und ausgeführt werden. Ebenso ist es möglich, das Script direkt im Anschluss über die unten stehenden Befehle auszuführen.

Um neben dem generierten Deltascript auch weitere, manuell erstellte Scripte ausführen zu können, wird das gesamte Verzeichnis nach SQL-Scripten durchsucht. Sollen keine weiteren Scripte ausgeführt werden, kann natürlich auch direkt das generierte Script ausgeführt werden, ohne den Ordner noch einmal zu durchsuchen.

Damit das Script ausgeführt werden kann, muss das SqlSeverCmdletSnapin geladen sein:

 

Im nächsten Teil präsentiere ich noch das Deployment eines Analysis Services Cube. Damit sind die Hauptbestandteile einer BI-Solution abgedeckt.