Donnerstag, 2. Mai 2013

PowerPivot in SharePoint 2013 richtig konfigurieren


Mal wieder ein Blogeintrag, der auf viele Stunden leidvoller Erfahrung zurückgeht. Diesmal geht es um PowerPivot in SharePoint 2013. Eigentlich eine gute, klare Sache:
  • Sie laden eine Excel Datei mit einem PowerPivot Modell in eine SharePoint PowerPivot Galerie hoch. Daraufhin können andere Anwender mit einem Browser auf die Excel Arbeitsblätter mit den Berichten zugreifen. Sogar Filtern, Sortieren, etc. funktioniert über  den Browser! Die Berechnungen werden serverseitig auf einer dafür konfigurierten Instanz von Analysis Services (SSAS) im tabularen Modus ausgeführt.
  • Nach einem konfigurierbaren Zeitplan werden die Daten im PowerPivot Modell neu aus den zugrunde liegenden Datenquellen geholt (z.B. Datenbanken, Dateien, Feeds, etc.). Auf diese Weise sehen die Anwender immer Berichte mit aktuellen Daten.
Um das alles zu konfigurieren, bietet sich der Einsatz des PowerPivot Configuration Tools an. Gerade dann, wenn man noch nicht so vertraut mit all den beteiligten Komponenten ist oder wenn es darum geht, einfach nur "mal eben" ein Testsystem aufzusetzen, führt das Tool in der Regel schnell zum Ziel.

Wenn das alles so gut geht - wo ist dann das Problem?

Nicht immer funktioniert das PowerPivot Configuration Tool einwandfrei. Zum ersten Mal konnte ich das bei einem Testsystem beobachten, das keine Internetverbindung hatte. (Nur am Rande: in diesem Fall waren diese beiden Artikel sehr hilfreich: Skripts von Craig Lussier und der TechNet Artikel, auf den er sich bezieht.) Aber auch nach dem "Rumfummeln" an einer korrekt laufenden Installation musste ich mich der gleichen Herausforderung stellen.
Das Problem ist, dass Sie die zeitgesteuerte Aktualisierung der Daten nicht einrichten können. Der erste Schritt ist einfach: Sie klicken das Symbol zum Erstellen eines Zeitplans für die Aktualisierung an.
Eigentlich ganz einfach, für die Aktualisierung einen Zeitplan einzurichten.
Dann folgt die Enttäuschung:
"A schedule cannot be enabled for a workbook with no external data sources"
Wie will man hier die zeitgesteuerte Aktualisierung einrichten?
Aber ich bin mir ganz sicher, dass PowerPivot die Daten aus einer SQL Server Datenbank holt. Was nun?
 

Ursache und Lösung

Wie immer bei SharePoint lässt sich das Problem lösen, wenn man sich klar macht, welcher Dienst sich mit welcher Identität wo authentifizieren möchte. Bei dieser Gelegenheit kann ich auch gleich zeigen, wie Sie Ihre SharePoint Umgebung etwas sicher konfigurieren, als das Configuration Tool das macht.
Dreh- und Angelpunkt ist das Dienstkonto des PowerPivot Dienstes.
  1. Einrichten eines Application Pools für den Dienst
    1. Gehen Sie nach "Central Administration" - "Application Management" - "Manage Service Applications"
    2. Dort finden Sie die Service Application für PowerPivot; das Configuration Tool vergibt den Namen "Default PowerPivot Service Application". Klicken Sie NEBEN diesen Namen und dann auf die Schaltfläche "Properties".
    3. Im folgenden Dialog können Sie die Service Application einem Application Pool zuweisen. Das Configuration Tool weist alle Service Applications demselben Pool zu. Ich habe hingegen einen neuen Pool "PowerPivot Pool" erstellt und diesem mit dem Link "Register new managed account" das Dienstkonto svcPowerPivot zugewiesen. Dieses Domänenkonto muss vorher bereits angelegt worden sein (einfach anlegen, keine Rechte zuweisen). Die Folge: Alle Service Applications, die diesem Pool zugewiesen werden, werden mit diesem Dienstkonto ausgeführt.
  2. Dieses Konto braucht Zugriff auf die Web Application. Dazu starten Sie über "Start" - "Programme" - "Microsoft SharePoint 2013 Products" das Programm "SharePoint 2013 Management Shell" als Administrator. Führen Sie das folgende 2-zeilige PowerShell Skript aus, wobei Sie die Platzhalter mit dem Namen Ihrer Web Application und Ihres Dienstkontos ersetzen.
    $webApp = Get-SPWebApplication "http://<servername>"
    $webApp.GrantAccessToProcessIdentity("YOURDOMAIN\<serviceAccountName>")
  3. Dieses Dienstkonto svcPowerPivot braucht nun noch eine besondere Berechtigung: Es muss ein Administrator in der SharePoint zugeordneten SSAS Instanz sein. Dazu benötigen Sie das SQL Server Management Studio. Stellen Sie eine Verbindung zu dieser Instanz von SSAS her. In meinem Fall hat sie den Namen "SQL1\POWERPIVOT". Mit einem Rechtsklick auf diese Instanz im Object Explorer öffnet sich ein Kontextmenü. Wählen Sie hier "Properties" aus. Im folgenden Dialogfenster dann "Security" auswählen und das Dienstkonto den Server Administratoren hinzufügen.
  4.  

Damit hat das Konto, mit dem die PowerPivot Service Application ausgeführt wird, alle erforderlichen Berechtigungen. Nun kann die PowerPivot Application in der SSAS Instanz nachsehen, welche Datenverbindungen das PowerPivot Modell hat - und Sie können den Scheduled Data Refresh aktivieren.


Weitere hilfreiche Links

 

Nachbemerkung

Mir ist schon klar, dass dieser Text eine abenteuerliche Mischung von Deutsch und Englisch enthält. Das ist der Tatsache geschuldet, dass ich zwar in Deutsch schreiben möchte, aber serverseitig inzwischen zumeist aus gutem Grund die englischsprachige Version von SharePoint (und SQL Server) eingesetzt wird. Ich war der Meinung, dass so die Klarheit erhalten bleibt. Für Verbesserungsvorschläge bin ich dankbar!