Automatisiertes Deployment einer BI Solution – Teil 4: SSAS
In Teil 1 und Teil 2 dieser Blog-Serie habe ich demonstriert, wie SSIS-Projekte mit Hilfe der Power Shell deployed werden können. Teil 3 hat sich mit der Bereitsstellung der Datenbank befasst. Jetzt fehlt es uns noch an einem Analysis-Services-Cube – oder kurz: SSAS-Cube – bzw. einigen Reports für ein vollständiges BI-Projekt. Entsprechend möchte ich mich in diesem abschließenden Teil dem Deployment eines SSAS-Cubes mit Hilfe der PowerShell widmen.
SSAS-Projekte erstellen
Wie schon in den vorangegangenen Schritten muss auch das SSAS-Projekt zunächst über einen Build-Prozess erstellt werden. Hierbei werden die folgenden Dateien generiert:
- *.asdatabase
Definition der AS Datenbank und der darin enthaltenen Objekte - *.deploymentoptions
Deploymentoptionen analog der Einstellungen im Projekt (z.B. vollständiges Deployment, nur Änderungen, Rollen beibehalten, etc.) - *.deploymenttargets
Definiert die Zielumgebung für das Deployment (z.B. Server und AS Datenbankname) - *.configsettings
Beinhaltet z.B. die Verbindungsinformationen zur unter dem Cube liegenden Datenbank
Generierung des XMLA-Scriptes
Mit Hilfe dieser Dateien generieren wir nun ein XMLA-Script. Hierzu wird die SQL Server Analysis Services Deployment Engine verwendet. Details zu den einzelnen Parametern finden sich in der MSISDN: https://msdn.microsoft.com/en-us/library/ms162758.aspx
- Microsoft.AnalysisServices.Deployment.exe $path\Cube.asdatabase /s:GenerateXmla.log /o:SSASDatabase.xmla
Danach wird das Script gegen den Analysis Server ausgeführt:
- # Erforderliche Assemblies einbinden
- [System.Reflection.Assembly]::LoadWithPartialName(“Microsoft.AnalysisServices.AdomdClient”)
- # Zielserver aus .deploymenttargets Datei lesen
- $DeploymentTargetsFile = <lokaler Pflad zu *.deploymenttargets>
- $deploymentTargets = [xml](Get-Content $DeploymentTargetsFile)
- # Verbindung mit dem AS Server herstellen
- $serverName = “Data Source=” + $deploymentTargets.DeploymentTarget.Server
- $conn = New-Object Microsoft.AnalysisServices.AdomdClient.AdomdConnection $serverName
- $conn.Open()
- # XMLA einlesen
- $xmlaPath = <lokaler Pfad zur generierten XMLA Datei>
- $xmla = Get-Content $xmlaPath
- # XMLA ausführen
- $cmd = New-Object Microsoft.AnalysisServices.AdomdClient.AdomdCommand $xmla, $conn
- return $cmd.ExecuteNonQuery();
Und schon steht Ihnen Ihr SSAS-Cube zur Verfügung!
Neuen Kommentar schreiben