So vereinfachen Sie die SSAS-Bereitstellung von DEV zu PRO

7

Hier ist mein Problem: In meiner Firma gibt es ein Entwicklerteam, das Würfel, Dimensionen (...) in SSAS in einer DEV-Umgebung erstellt (nennen wir es SSASDEV). Diese Umgebung ist an eine SQL Server-Datenbank in DEV gebunden (nennen wir sie SQDEV). Meine Aufgabe ist es, ihre Arbeit von der DEV-Umgebung in der PRO-Umgebung bereitzustellen. Diese PRO-Umgebung (SSASPRO) basiert auf einer anderen SQL Server-Datenbank (SQPRO).

Im Moment sendet das Entwicklerteam das SSAS, sendet mir das XMLA-Skript, ich muss jede definierte Sicherheitsregel und die in dieser XMLA angegebene Verbindungszeichenfolge ändern (Sicherheitsregeln, da sie je nach Umgebung und Verbindungszeichenfolge auf unterschiedlichen Rollen basieren, weil der SQL Server-Datenbank). Es ist eine schwere Arbeit für jede Bereitstellung, daher möchte ich dies automatisieren.

Ich habe nur Wege gefunden

(1) - um den DEV-Cube zu skripten und die XMLA auf PRO anzuwenden (was jetzt gemacht wird).

(2) - zum Synchronisieren von Cubes (dh Aufheben, erneutes Anwenden von Sicherheitsregeln und Ändern des Verbindungsstrings).

Ich kann mir nicht vorstellen, dass ich der einzige in dieser Situation auf der ganzen Welt bin! Hat jemand einen Tipp oder einen Hinweis für mich? Gibt es einen anderen einfachsten Weg und ich habe ihn verpasst? Ist meine interne Organisation (unterschiedliche Datenbanken für jede Umgebung) für SSAS nicht logisch?

Ich arbeite mit SSAS 2008R2 und 2012

Vielen Dank für Ihre Antworten!

el_grom
quelle

Antworten:

2

Ich werde Ihnen erklären, wie wir an meiner Stelle SSAS-Projekte zwischen verschiedenen Umgebungen bereitstellen. Wir verwenden eine Reihe von Powershell-Skripten, die:

Teil 1:

  • Rufen Sie die letzte Version vom Build-Server ab und stellen Sie die Datei bereit, um die letzte funktionierende Version von XMLA zu generieren.
  • Nehmen Sie die generierte XMLA vom Build-Server und kopieren Sie sie auf den QS-Server.

Teil 2:

  • Jetzt ändern wir auf dem QA-Server manuell den Servernamen und den Datenbanknamen (als Parameter für das PS-Skript festgelegt). Wir überprüfen, ob alle erforderlichen Skripts vorhanden sind.
  • Ein PS-Skript führt die resultierende XMLA auf dem aktuellen QS-Server aus, sodass die SSAS-Datenbank erstellt wird (jedoch nicht verarbeitet wird).
  • ein XMLA-Skript, das den gesamten Prozess des Cubes und seine Dimensionen steuert;

Alle diese Schritte werden so automatisch wie möglich ausgeführt, wobei der Entwickler / QS-Mitarbeiter so wenig wie möglich eingreift. Wir setzen jedoch dazwischen ein paar Augäpfel ein, um unseren Geist zu schützen. Ich werde nicht sagen, dass es das Beste ist, aber es funktioniert und erledigt den Job. Ich bin sicher, dass Sie vor dem letzten Schritt ein beliebiges XMLA-Skript einfügen können, um vorhandene Rollen zu entfernen und neue zu erstellen. Und ein PS-Skript zu ändern, um ein neues SQL- oder XMLA-Skript auszuführen, ist überhaupt nicht schwierig. Ich nehme an, dass sich die Rollen und Berechtigungen nicht so stark ändern, sodass sie per Skript erstellt und wiederverwendet werden können.

PS: Dies ist eine Umgebung mit Domänenbenutzern und festen Servern (sodass wir Freigaben, Domänenkonten und all diese Flusen verwenden können). Wenn Sie eine andere Umgebung haben, ist es möglicherweise schwieriger, diese zu erledigen.

Marian
quelle
Vielen Dank für Ihr Feedback und Ihren Erfahrungsaustausch! Wir haben jetzt mehr oder weniger die gleiche manuelle Vorgehensweise (mit Ausnahme der PS-Skripte).
el_grom
1
Nun, dann besteht die Lösung für Ihr Problem darin, eine Skriptsprache zu verwenden, um Ihre Aufgabe zu erledigen. Powershell ist nicht einfach zu erlernen, weil es höllisch hässlich ist, aber es ist gut in SQL, .NET ... integriert und einfach zu verwenden, nachdem Sie eine Reihe von Skripten haben, die bereits funktionieren.
Marian
Ja, ich habe diese Lösung bereits gestartet. Ich bin jedoch sehr überrascht zu sehen, dass es in SQL Server kein "eingebautes" Tool dafür gibt.
el_grom
Nun, die Bereitstellungsarbeit ist nicht wirklich Teil des SQL Servers. Möglicherweise gibt es Tools, die eine kontinuierliche Integration in eine SQL Server-Umgebung bieten, mit denen ich jedoch nicht sehr vertraut bin.
Marian
Hat jemand Erfahrung mit TFS mit Analysediensten?
Sam Yi
0

Es ist ein paar Jahre her, aber ich glaube, das war es, was wir in meiner alten Position gearbeitet haben.

Beginnen Sie mit einer AS-Datenbank mit Rollen, aber ohne Rollenmitglieder, und generieren Sie die Skripts, um die Mitglieder hinzuzufügen und als separate XML-Datei zu speichern. Wenn Mitglieder entfernt werden müssen, schreiben Sie diese ebenfalls als separate Datei.

Bei der Migration der AS-Datenbank auf eine neue Instanz werden diese Berechtigungsskripts ausgeführt, nachdem die Hauptdatenbank abgeschlossen wurde. Sie können sie mit Powershell oder SSIS ausführen, um die Bereitstellung zu automatisieren.

Um dies weiter zu automatisieren, können Sie jede einzelne Berechtigung skripten und einige SQL-Datenbanktabellen erstellen, die die Beziehung zwischen AS-Datenbanken und Berechtigungen sowie Skriptpositionen enthalten. Verwenden Sie dann Powershell oder SSIS, um die Berechtigungen im Rahmen des Bereitstellungsprozesses programmgesteuert auf die AS-Datenbank anzuwenden.

Zusammenfassend kann gesagt werden, dass die von Ihnen erstellten Rollen in allen Ihren Umgebungen (und TFS) bestehen bleiben. Es sind nur die Mitglieder der Rollen, die zwischen Umgebungen geändert werden müssen, die mit Skripten verarbeitet werden können. Die anfängliche Einrichtung erfordert einige Investitionen, aber sobald sie abgeschlossen ist, funktioniert sie ziemlich reibungslos.

Wes H.
quelle