CiAgICA8IS0tIExpbmtlZEluIC0tPgogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIF9saW5rZWRpbl9wYXJ0bmVyX2lkID0gIjEyMzUwNzMiOwogICAgICAgIHdpbmRvdy5fbGlua2VkaW5fZGF0YV9wYXJ0bmVyX2lkcyA9IHdpbmRvdy5fbGlua2VkaW5fZGF0YV9wYXJ0bmVyX2lkcyB8fCBbXTsKICAgICAgICB3aW5kb3cuX2xpbmtlZGluX2RhdGFfcGFydG5lcl9pZHMucHVzaChfbGlua2VkaW5fcGFydG5lcl9pZCk7CiAgICA8L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgICAgKGZ1bmN0aW9uKCl7dmFyIHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IilbMF07CiAgICAgICAgICAgIHZhciBiID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CiAgICAgICAgICAgIGIudHlwZSA9ICJ0ZXh0L2phdmFzY3JpcHQiO2IuYXN5bmMgPSB0cnVlOwogICAgICAgICAgICBiLnNyYyA9ICJodHRwczovL3NuYXAubGljZG4uY29tL2xpLmxtcy1hbmFseXRpY3MvaW5zaWdodC5taW4uanMiOwogICAgICAgICAgICBzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGIsIHMpO30pKCk7CiAgICA8L3NjcmlwdD4KICAgIDxub3NjcmlwdD4KICAgICAgICA8aW1nIGhlaWdodD0iMSIgd2lkdGg9IjEiIHN0eWxlPSJkaXNwbGF5Om5vbmU7IiBhbHQ9IiIgc3JjPSJodHRwczovL3B4LmFkcy5saW5rZWRpbi5jb20vY29sbGVjdC8/cGlkPTEyMzUwNzMmZm10PWdpZiIgLz4KICAgIDwvbm9zY3JpcHQ+CiAgICA8IS0tIEVuZCBMaW5rZWRJbiAtLT4KICAgIA==
Generic filters
Exact matches only
Search in title
Search in excerpt
Search in content

Dynamic Management Views für SSAS

Ist es in früheren Versionen des SQL Servers schon möglich, mittels Dynamic Managament Views (kurz: DMVs), auf die Metadateninhalte der relationalen Datenbanken zuzugreifen und diese zu analysieren, so gilt diese Möglichkeit für OLAP-Datenbanken erst seit der Version 2008. Somit werden dem Administrator und Analysten neue Möglichkeiten gegeben, verschiedenste Anforderungen und Sachverhalte auch für die Metadaten von Cubes zu untersuchen. Die Verwendung von DMVs hat den Vorteil, mittels abgesetzter SQL-Statements tabellarisch vorgefertigte Ausgaben zu erhalten. Natürlich gibt es hierfür auch externe Tools und nicht zuletzt den SQL Server eigenen Performance Monitor, aber mit dieser Möglichkeit der eigenen Zusammenstellung von Queries und Einbau in eigene Skripte, erhält der User zusätzliche Flexibilität.

Im Folgenden werden einige Mögliche Abfragen mit DMVs dargestellt.

So können beispielsweise folgende Sachverhalte geklärt werden:

  • Aufzeigen der momentanen Verbindungen mit SSAS
  • Verwendete Datenbanken, MDX Statements, Sessions
  • Ausführungszeiten
  • Auflistung der Würfelstrukturen (Hierarchien, Dimensionen)
  • Verwendungshäufigkeit von Dimensionselementen und Measures in Abfragen

DMVs bezeichnen vorgefertigte Views zur Anzeige der SSAS Metadaten in Tabellenform, deren Katalog der vorhandenen Inhalte mittels SQL-Statements, aufgerufen im MDX Query Editor des SQL Management Studios, abgerufen werden kann. Eine Übersicht aller vorhandenen, möglichen DMVs erhält man somit bei einer Verbindung zu SSAS mit folgendem Statement:

SELECT * FROM $system.dbschema_tables WHERE Table_Schema = ‘$SYSTEM’ ORDER BY [TABLE_NAME]

Um solche Fragestellungen wie „wo besteht noch ein Bedarf an Aggregationen?“, „welche Indizes werden nicht mehr benutzt?“, oder „welche MDX Statements sind Langläufer?“ zu beantworten, lässt sich die Liste der DMVs zunächst einmal in drei sinnvolle Themengebiete unterteilen:

  • Discover – Untersuchungsmöglichkeiten zu Memory Usage und Systemressourcen
  • MDSchema – Datenbankschemarelvante Analysen
  • DBSchema – Datenbankobjekte wie Dimensionen und Measures

Nun exemplarisch ein paar Beispiele und deren Ergebnisdarstellung im Bereich Discover.

Interessant ist sicherlich an erster Stelle die Möglichkeit, die SSAS Session der angemeldeten Benutzer auf der OLAP-Datenbank zu sehen.

SELECT * FROM $system.DISCOVER_CONNECTIONS

Des Weiteren die Möglichkeit der Objektaktivitäten, also die Quantität deren Verwendung:

SELECT * FROM $system.DISCOVER_OBJECT_ACTIVITY

Das vorliegende Ergebnis der Object Read und Writes liefert mögliche Aussagen darüber, welche Hierarchien/Objekte sich eventuell keiner großen Beliebtheit erfreuen und somit zur Aufräumung des Systems beitragen könnten, aber auch die Anzeige der Elemente, die wirklich an oberster Stelle stehen und somit unverzichtbar scheinen.

Mittels der Gruppe der MDSCHEMA DMVs werden nun nähere Informationen zu einzelnen Elementen, wie beispielsweise Tabellen und Hierarchien geliefert.

Liste der vorhandenen Measures:

SELECT * FROM $system.MDSCHEMA_MEASURES

Analog hierzu die gebräuchlichsten Abfragen zum Themengebiet MDSCHEMA:

select * from $system.mdschema_cubes
select * from $system.mdschema_dimensions
select * from $system.mdschema_hierarchies
select * from $system.mdschema_levels
select * from $system.mdschema_measuregroups
select * from $system.mdschema_measuregroup_dimensions
select * from $system.mdschema_measures
select * from $system.mdschema_properties
select * from $system.mdschema_members
select * from $system.mdschema_sets
select * from $system.mdschema_kpis
select * from $system.mdschema_input_datasources

Gerade auf dieser granularen Ebene mit den je nach Projekt und Datenbank sicherlich auch am meisten zurückgelieferten Datensätzen je Abfrage, steigt auch hier die Anforderung einer sinnvollen Filterungsmöglichkeit der Abfragen. Hier gibt es bei einer DMV-Abfrage Unterschiede zur herkömmlichen TSQL-Syntax, denn manche Einschränkungsmerkmale lassen sich hier nicht oder nur eingeschränkt verwenden. So ist die Möglichkeit von Joins und die Verwendung des LIKE Operators nicht gegeben.

select * from $system.mdschema_members where cube_name = ‘$Periode’ and [dimension_unique_name] = ‘[Periode]’ and [hierarchy_unique_name] = ‘[Periode].[Week]’

Zudem gibt es sogenannte „restricted DMVs“, deren Aufruf nur unter Verwendung einer vorgegebenen Einschränkung möglich ist. Hier ist unbedingt die case sensitive Schreibweise zu beachten.

Diese erkennt man auch immer daran, dass bei einem nicht vollends ausgefüllten Statement diese oder eine ähnliche Nachricht als Fehlermeldung erscheint:

Die ‘CUBE_NAME’-Einschränkung ist erforderlich, fehlt jedoch in der Anforderung. Verwenden Sie SYSTEMRISTRICTSCHEMA zur Angabe von Einschränkungen.

Hier ist unbedingt die case sensitive Schreibweise zu beachten.

SELECT * FROM SYSTEMRESTRICTSCHEMA ($SYSTEM.DISCOVER_DIMENSION_STAT, DIMENSION_NAME = ‘Produkte’, DATABASE_NAME=’Chair2008′)

Dies liefert eine Statistik über die ausgewählte Dimension:

Eine weitere denkbare Einsatzmöglichkeit wäre beispielsweise die Fragestellung, welche Partition weitere/geänderte Aggregationen benötigt.

SELECT
    OBJECT_PARENT_PATH,
    OBJECT_ID,
    OBJECT_CPU_TIME_MS,
    OBJECT_AGGREGATION_MISS
FROM
    $SYSTEM.DISCOVER_OBJECT_ACTIVITY
ORDER BY
    OBJECT_AGGREGATION_MISS DESC

Hierbei gibt die Spalte “OBJECT_AGGREGATION_MISS” Aufschluss darüber, bei wie vielen Abfragen die vorhandenen Aggregationen ungenutzt blieben, also verfehlt wurden.

Über ein linked Server bestünde nun die Möglichkeit, diese Daten aus der OLAP-Datenbank zu materialisieren und relational für jegliche Fragestellung und/oder weitere Nutzung zur Verfügung zu stellen.
Dies stellt zunächst nur einen kleinen Einblick dar. Denkbar wäre die Einbettung in DeltaMaster und vor allem liefert es hilfreiche Information über Systeme, deren Metadaten nicht per DeltaMaster Modeler erstellt wurden. In der MSDN Library (http://msdn.microsoft.com/en-us/library/ee301466.aspx) existiert eine Übersicht aller möglichen DMVs.