Wenn die Sicherheitseinstellungen in Analysis Services immer komplexer werden, dann steht man oft vor der Herausforderung, die Rollen und Rechte in übersichtlicher Form darzustellen, zu sichern – und eben auch im Zweifelsfalle wieder einzuspielen.

Ebenso existieren Fälle, in denen man gerne Rollen bzw. Rechte automatisiert erstellen bzw. editieren möchte und nicht unbedingt dynamische Security per MDX und User benutzen möchte oder kann.

Natürlich kann man diese Aufgaben mit XMLA-Scripts erledigen, aber ich finde dies immer etwas „fummelig“ und wenig strukturiert.

Eine Alternative heißt AMO (Analysis Services Management Objects) – eine API für die Objekte des Analysis Services. Beispielsweise kann man AMO Dimensionen oder Cubes aufbauen, verarbeiten – aber eben auch das gesamte Rechtemanagement abwickeln.

Zu diesem Zweck habe ich ein C#-Programm geschrieben, das zwei Kernaufgaben leistet:

  • Backup der gesamten Rollen und Rechte einer AS-Datenbank in Tabellen einer SQL-Server-Datenbank
  • Restore aus den Tabellen und Schreiben in die AS-Datenbank

Über „Initialize“ kann die Tabellenstruktur neu angelegt werden. Darin werden später alle Security-Objekte gesichert.
Eine Sicherung in Tabellen sieht beispielsweise so aus:

Diese Form der Speicherung ist übersichtlich und sorgt auch bei umfangreichen Systemen für eine gute Wartbarkeit.
Außerdem lässt sich wie oben angesprochen eine Automatisierung realisieren, indem man z.B. Rollen zentral relational anlegt und Elemente ggf. automatisch generieren lässt.
Ein denkbares Anwendungsbeispiel könnte sein, dass z.B. Rollen und Rechte vom Fachbereich gepflegt werden sollen.
Über die Import-Funktion lassen sich dann alle Änderungen bzw. Neuanlagen bequem und schnell hochladen.