Informationen aus dem ActiveDirectory über SQL-Server ermitteln

Wussten Sie, dass man Informationen aus dem ActiveDirectory direkt über den SQL-Server ermitteln kann? Es ist ganz einfach!
Zuerst einmal benötigt man eine Verbindung zur (proprietären) ActiveDirectory-Datenbank. Den dazu notwendigen Treiber (OLE DB Provider for Microsoft Directory Services) bekommt man schon bei der Installation des SQL-Server frei Haus mitgeliefert. Über diesen Treiber muss nur eine Verbindung zum ActiveDirectory hergestellt werden. weiterlesen…

Rollen-Verwaltung: Rollen-Mitglieder im SSAS auflisten

Wie viele Rollen haben Sie in Ihrem SSAS-Datenmodell angelegt, um die Zugriffsrechte der Benutzer zu steuern? Bei einem Kunden von mir sind es 89. Darüber werden die Zugriffsrechte von fast 600 Anwendern verwaltet! Und jetzt beantworten Sie mal schnell die Frage: “…in welchen Rollen ist eigentlich der Anwender 08/15 zugeordnet?”
Leider ist mir bisher noch kein Tool begegnet, mit dem sich diese Frage beantworten lässt. Aber es gibt Möglichkeiten – z.B. über PowerShell oder AMO – aber dazu muss zuerst PowerShell installiert oder ein kleines Programm mit AMO geschrieben werden. Ich möchte heute einen Weg zeigen, wie man ausschließlich mit dem Management-Studio – in drei einfachen Schritten – die aufgeworfene Frage beantworten kann. weiterlesen…

Blackbox für Server-Abstürze: Der SSAS FlightRecorder

Seit dem SQL-Server 2005 gibt es für die AnalysisServices eine großartige Möglichkeit, um die internen Abläufe und Prozesse während des laufenden Betriebs aufzuzeichnen und später (z.B. nach einem Serverabsturz) zu analysieren. Vor kurzem hatte ich einen solchen Fall bei einem Kunden: Der Server hat im laufenden Betrieb plötzlich nicht mehr reagiert. Natürlich zu einer absolut unpassenden Zeit. Bei dem Kunden wurden weltweit Zahlen für die Produktionsplanung eingesammelt und den Anwendern standen insgesamt nur 48 Stunden für die Dateneingabe zur Verfügung. Der Serverstillstand ereignete sich nachts um kurz nach 1:00 Uhr MEZ – Dateneingabe-Zeit in Asien. Natürlich haben die Kollegen aus Asien sofort eine Mail an den Administrator in Deutschland geschickt. Die entsprechenden Gegenmaßnahmen wurden aber erst eingeleitet, als der Administrator gegen 7:30 Uhr sein Büro betreten und seine Mails gecheckt hatte. Der SSAS-Dienst wurde durchgestartet und alles lief wieder einwandfrei.
Sechs geschlagene Stunden Systemstillstand bei einem Zeitfenster von nur 48 Stunden. Natürlich kam die Frage auf, wie es dazu kommen konnte und was in Zukunft getan werden kann, dass ein solches Problem nicht wieder auftritt.
Zur Beantwortung dieser Fragen konnte das mit dem SSAS-FlightRecorder aufgezeichnete Trace-File einen entscheidenden Beitrag leisten! Aber zuerst ein paar Informationen zur Konfiguration des FlightRecorder. weiterlesen…

Schreibrechte in SSAS zeitgesteuert vergeben

In einem Kundenprojekt gab es vor einiger Zeit eine sehr interessante Anforderung: In einem monatlichen Turnus soll eine Bottom-Up Planung erfolgen, in deren Verlauf – auf drei unterschiedlichen Stufen – Planzahlen für die verkauften Stückzahlen in den folgenden sechs Monaten eingegeben werden sollen. Letztendlich soll aus diesen Informationen eine genaue Produktionsplanung erfolgen, um eine möglichst ökonomische und effiziente Produktions- und Lagerauslastung zu erreichen.
Die Erfassung soll innerhalb eines vorgegebenen Zeitkorridors stattfinden – meistens in der 3. Woche eines Monats, evtl. jedoch, abhängig von Feiertagen, auch danach. Als Prämisse gilt, dass eine Stufe abgeschlossen werden muss, bevor die nächste Stufe die Berechtigung zur Datenerfassung erhält. Übertragen auf unser Chair Modell könnte man die drei Stufen wie folgt abgrenzen:
1. Anwender mit Regionalverantwortung: Eingabe auf alle Produkte und eine bestimmte Region
2. Anwender mit Produktgruppenverantwortung: Eingabe auf Produkte einer bestimmten Produktgruppe über alle Regionen
3. Anwender mit Globaler Verantwortung: Eingabe auf alle Produkte und Regionen
Die Eingaben auf einer Stufe sollen nicht durch die Eingabe auf einer höheren Stufe überschrieben werden, sondern auf eigenen Measures erfasst werden, so dass der gesamte Eingabeprozess auch im nachhinein noch schlüssig abgebildet werden kann. weiterlesen…

Maskerade im SQL-Server-Agent

Hatten Sie auch schon einmal das Problem beim Datenimport: Während der Entwicklung der SSIS-Pakete im BI-Development-Studio liefen alle Tests wunderbar durch. Der Flatfile-Import von einem Netzlaufwerk oder der Datenimport aus den Tabellen eines anderen SQL-Servers. Jetzt nur noch schnell einen Import-Job im SQL-Server-Agent anlegen und einen dicken Haken hinter das Thema “Datenimport” machen.
Aber was ist das, sobald man den Job über den SQL-Server-Agent anstößt ist nichts mehr wie vorher – die Fehlermeldungen überschlagen sich, obwohl doch gar nichts anders ist als vorher…
Doch weit gefehlt – hier kann es gleich mehrere Ursachen geben, warum der Import-Job trotz vorherigen erfolgreichen Tests in der Entwicklungsumgebung fehlschlägt. weiterlesen…

Rechteverwaltung in SSAS – Teil 2

Bereits im ersten Beitrag zur Rechteverwaltung in SSAS habe ich darauf verwiesen, dass es eine alternative Möglichkeit gibt, um Benutzerrechte einfach und übersichtlich zu pflegen. Diesen Modellierungsansatz möchte ich heute mit Hilfe einer zusätzlichen “Rechte”-Measuregroup zeigen. Natürlich ist dazu einiges in SSAS einzustellen bzw. über den DeltaMaster Modeler zu pflegen; aber am Ende wird eine einfache Eingabeanwendung im DeltaMaster genügen, um die Zugriffsrechte aller Anwender zu pflegen. weiterlesen…

Flatfiles mit SSIS importieren

Wer Daten mit DeltaMaster analysieren möchte, muss natürlich zuerst einmal dafür sorgen, dass überhaupt Daten zum Analysieren da sind. In unseren Projekten setzen wir sehr oft auf Microsoft SQL-Server mit Analysis Services, um die Daten aus den unterschiedlichsten Vorsystemen zusammen zu tragen, aufzubereiten und für eine optimale Datenanalyse bereit zu stellen. Aber nicht alle Systeme können direkt über eine Schnittstelle “angezapft” werden. In diesen Fällen muss eine andere Lösung für den Datenimport gefunden werden. Eine Möglichkeit ist dann, die Daten aus dem Vorsystem in ein Flatfile zu exportieren und mit den Bordmitteln der SQL-Server Integration Services (kurz SSIS) in den SQL-Server automatisch zu importieren.
“Flatfiles” sind einfache Textdateien (.txt, .csv). Allen gemeinsam ist, dass die Daten nach einem vorgegebenen Schema spaltenweise geordnet sind, so dass sie in eine Tabelle importiert werden können. Um die einzelnen Spalten voneinander abzugrenzen werden entweder feste Spaltenbreiten vorgegeben – hierbei werden die Daten mit Leerzeichen aufgefüllt, bis die notwendige Spaltenbreite erreicht ist – oder es werden Trennzeichen verwendet (z.B. TAB, Komma, Semikolon etc.). Bei der Wahl des Trennzeichens ist besonders wichtig, dass es nicht auch in den Daten enthalten ist. Wird z.B. ein Komma als Spalten-Trennzeichen in einem Flatfile verwendet, in dem auch Dezimalzahlen mit Komma als Dezimaltrennzeichen vorkommen, führt dies beim Import zu schwerwiegenden Fehlern – plötzlich werden die Zahlen der Nachkommastellen als Inhalt der nächsten Spalte interpretiert… Das ist nicht gut! weiterlesen…

SSIS: Spalten bei Flatfile-Import automatisch hinzufügen/entfernen

In diesem Beitrag möchte ich gerne ein Thema beleuchten, das uns nicht unbedingt täglich in unserem Projektgeschäft begegnet – das aber trotz allem nicht minder interessant ist. Beim SSIS-Import von Flatfiles in eine Tabelle muss immer peinlichst genau darauf geachtet werden, dass die Anzahl der Spalten aus den Flatfiles exakt die gleiche ist. Aber in der Praxis ist das manchmal gar nicht so einfach – zum Beispiel bei folgendem Szenario:
Umstellung der Flatfile-Definition: Durch ein neues Attribut, das im Flatfile geliefert werden soll, kommt eine weitere Spalte im Flatfile hinzu
Die Änderung soll zuerst nur in der Entwicklungsumgebung berücksichtigt werden, aber es sollen keine separaten Flatfiles für die Entwicklungsumgebung eingesammelt werden
Unterschiedlich schnelle Umsetzung der neuen Flatfile-Definition bei den Datenlieferanten (z.B. Tochterunternehmen). Es ist sehr schwierig, alle Beteiligten auf einen Stichtag für die Datenlieferung im neuen Format fest zu legen. Dadurch hat man für eine Übergangszeit ein gewisses “Durcheinander”
Der hier gezeigte Lösungsansatz geht davon aus, dass zu einer bestimmten Anzahl und Reihenfolge von Spalten in einem Flatfile weitere Spalten angehängt werden. Bei überzähligen Spalten werden diese entsprechend aus dem Flatfile gelöscht. weiterlesen…

Rechteverwaltung in SSAS – Teil 1

Die Konzeption und der Aufbau einer guten OLAP-Datenbank ist eine Kunst für sich. Aber wenn diese Schritte abgeschlossen sind, ist die Arbeit noch lange nicht zu Ende – jetzt müssen die Zugriffsrechte der Anwender so zugeschnitten werden, dass jeder nur die Daten sehen kann, die er sehen darf.
Im diesem ersten Teil dieses Beitrags zeige ich die Vorgehensweise, wie in den SQL Server Analysis Services (SSAS) die Zugriffsrechte über so genannte Rollen (engl. Roles) verwaltet werden können. Der zweite Teil wird das Thema Rechteverwaltung mit OLAP-Unterstützung beleuchten. Dort werde ich einen Ansatz zeigen, wie mit Hilfe von zusätzlichen Measuregroups der administrative Aufwand für die Rechteverwaltung minimiert und vereinfacht werden kann. weiterlesen…