MS Analysis Services Informationen mit Hilfe von ASSP (Analysis Services Stored Procedure) auslesen

Wer kennt nicht das Problem, dass man „wie die Jungfrau zum Kinde“ innerhalb der Firma plötzlich einen neuen Aufgabenbereich hat, oder man soll bei einem Kunden die Verwaltung eines SQL-Server Analysis Services übernehmen.

Um sich einen Überblick zu verschaffen, macht es Sinn die relevanten Informationen in einer relationalen Datenbank zu verwalten. Oftmals sind die SSAS-Datenbanken „historisch gewachsen“ und die Dokumentation der Cuberollen/Berechtigungen entweder veraltet oder gar nicht vorhanden.

Für alle die gerne eine Übersicht über Ihre Cubes und den enthaltenen Cuberollen haben möchten, stelle ich nun eine Möglichkeit dar, diese mit wenig Aufwand auszulesen und in Tabellen zu schreiben.

Als erstes erstellt man sich eine kleine Datenbank (10 MB Datenfilegröße sollten reichen). Um die Daten aus den SSAS-Datenbanken (Cubes) auslesen zu können, braucht man noch 2 Dinge:

  1. Linked Server (Anbieter: MSOLAP)
  2. ASSP-Assembly

Nun zum Linked Server:

Entweder per Script

linked_server-script

oder über den Assistenten:

linked_server_assistent_bild_1

Bei den Sicherheitseinstellungen müsst kommt es darauf an, welche Rechte Ihr habt. Ich verwende hier im Beispiel meine eigenen, da ich Administratorrechte habe.

linked_server_assistent_bild_2

Bei den Serveroptionen ist es wichtig die 2 gelb markierten Punkte auf „True“ zu setzen, damit die Kommunikation auch funktioniert.

linked_server_assistent_bild_3

Nachdem der Linked Server eingerichtet ist, muss man noch ein Assembly einspielen. Das zu verwendende Assembly (ASSP – Analysis Services Stored Procedure) lässt sich am besten mittels XMLA einspielen (Siehe meinen BLOG Eintrag: http://blog.antares-is.de/sql-server/assp-analysis-services-stored-procedure-fehler-fuer-die-clr-assembly-muss-eine-hauptdatei-angegeben-sein/)

Finden könnt Ihr die XMLA-Files hier: https://asstoredprocedures.codeplex.com/releases/view/629272

Bitte achtet darauf, welche Version euer SQL-Server hat, damit Ihr das richtige *.xmla-File downloaded.

Das Assembly nicht in jede SSAS-Datenbank einspielen, sondern nur als Serverassembly:

ssas_assp_assembly

Damit sind jetzt die Grundvoraussetzungen geschaffen, um die ersten Daten einmal auszulesen. Dies wird mittels openrowset und der Funktionalität ‚CALL ASSP.DiscoverXmlMetadataFull‘ durchgeführt.

Als erstes Beispiel lassen wir uns einmal alle Cubes anzeigen:

 

script_auslesen_cubeinfo

Aus der Ausgabe kann man sich nun die relevanten Daten in eine Tabelle in der neuen Datenbank schreiben lassen. Beispielhaft nehme ich einmal folgende Informationen:

  • Parent_DatabaseID (Name der SSAS-Datenbank)
  • Name (Name des Cubes)
  • CreatedTimestamp (Erstellungsdatum)
  • LastProcessed (letzte Aufbereitung)
  • State (Status = Processed -> Aufbereitet)
  • Collation

Hierzu erstelle nun eine kleine Tabelle:

tabelle_cubeinfo_erstellen

Achtung: die Daten aus der Abfrage kommen alle als Datentyp „ntext“. Deshalb erstelle ich die Spalten als „nvarchar“, damit diese später einfacher gewandelt werden können.

die gesamte Abfrage zur Befüllung sieht also dann so aus:

 

script_wegschreiben_cubeinfo

Hier habe ich noch weitere Abfragen, mit denen entsprechende Informationen ausgelesen werden können.

Cuberollen:

Mit der where-Einschränkung bekommt man nur die Rollen aus einer bestimmten SSAS-Datenbank angezeigt. Je nach Anzahl der Datenbanken und den darin enthaltenen Cuberollen, macht es Sinn sich bei der Anzeige der Daten immer nur auf eine Datenbank zu konzentrieren. Für die Befüllung einer Tabelle würde ich diese weglassen.

script_auslesen_cuberollen

 

Wer sich nun noch die berechtigten User innerhalb einer Cuberolle ansehen oder auch verwalten möchte, kann dies mit einer kleinen Erweiterung in der Cuberollenabfrage tun:

script_auslesen_cuberollen_member

 

Oftmals sind die SSAS-Datenbanken „historisch gewachsen“ und die Dokumentation der Cuberollen/Berechtigungen entweder veraltet oder gar nicht vorhanden. Deshalb gibt noch weitere Möglichkeiten z. B. die Einschränkungen auf Dimensionen oder Attribute, Rechte auf die Datenbank oder den/die Cube/s , usw. auszulesen und in relationalen Tabellen zu schreiben.

 

Wenn Bedarf an dem gesamten Script besteht, bitte eine kurze Mail an info@antares-is.de oder hier einen Kommentar hinterlassen – dann lassen wir das Script zukommen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Captcha * Time limit is exhausted. Please reload CAPTCHA.