L'installation de PowerPivot pour SharePoint parfois semée d'embûches

PowerPivot pour SharePoint est l'exemple même de l'intégration entre SQL Server et SharePoint.

Comme toute intégration de deux produits, la configuration peut être assez délicate. En l'occurence, voici le cas rencontré avec une installation SharePoint 2010 / SQL Server 2012...

L'intégration de SharePoint Excel Services et Analysis Services est assez complexe en raison des dialogues entre les différents services :

  • L’application web Excel se charge du rendu du classeur et demande au service de calcul Excel d’extraire le classeur de la base de données de contenu Sharepoint
  • Lorsqu’on agit sur le classeur powerpivot, le service de calcul Excel se connecte au fournisseur OLEDB pour Analysis Services qui redirige la demande vers le service PowerPivot. Celui-ci va extraire la base PowerPivot du classeur et va restaurer le cube sous Analysis Services. (Cette base Sandbox SSAS va rester disponible pour les prochaines requêtes et sera détruite au bout d’un certain temps).
  • Une requête MDX interroge le cube, et les résultats transitent par le chemin inverse : PowerPivot Service, Services de calcul Excel, application web Excel. Et voilà !

Mais il peut visiblement arriver qu'une paille se soit glissée dans toute cette belle mécanique : et tout simplement si on installe les produits d'une manière ou d'une autre...! En voici un exemple.


Pour installer un serveur SharePoint qui sera dédié à PowerPivot, la procédure la plus simple serait :

- d'installer le produit SharePoint (en mode ferme de serveurs), sans le configurer

(je choisis de ne pas configurer SharePoint maintenant)

- d'installer PowerPivot pour Sharepoint (option d'installation de SQL Server 2012). Lors de cette installation, on peut doit cocher la case pour installer aussi l'instance de base de données qui hébergera les bases SharePoint. C'est ici que peuvent se cacher les problèmes si on décide de décocher la case et d'utiliser une autre instance déjà installée par ailleurs !...

(dois-je ou non installer l'instance de base de données avec PowerPivot ? Attention si je choisis de décocher la case !)

- d'effectuer la configuration de SharePoint via l'assistant fourni par SQL Server 2012 (PowerPivot Configuration Wizard). Ici on renseigne les différents paramètres de configuration : instance de base de données, comptes de service, etc...

Comme l'annonce la documentation, cet assistant se charge de tout : la configuration notre ferme SharePoint alors qu'il est tout juste installé et non configuré, et la configuration des composants de PowerPivot pour SharePoint.

Si on a suivi scrupuleusement la procédure, tout va bien : l'assistant de configuration de PowerPivot a fait son travail, un site basique pour PowerPivot a été créé et tout fonctionne correctement : Excel Services, la galerie PowerPivot, etc.... L'instance de bases de données, ajoutée lors de l'installation (la case à cocher) héberge les bases de SharePoint et est une instance nommée PowerPivot.

Et si je veux choisir mon instance de bases de données ?

Seulement voilà : j'ai déjà une instance de base de données déjà et correctement installée sur mon serveur (instance par défaut), et je n'ai pas vraiment envie d'en installer une deuxième nommée PowerPivot.

  • Je décide donc de décocher la case "Add SQL Server Relational Database Engine to this installation".
  • Lors de la configuration par le Wizard de PowerPivot, je référence mon instance par défaut dans la boîte de dialogue.
  • Toute la configuration semble se passer normalement, les bases SharePoint sont bien créées, les composants de PowerPivot sont bien visibles dans l'administration centrale de SharePoint, mon site PowerPivot est bien là.

Mais dans ce scénario d'installation PowerPivot ne fonctionne pas ! Lorsque je publie un classeur Excel/PowerPivot, tout est bien là mais impossible d'actualiser, avec un beau message d'erreur :

Les logs de SharePoint sont peu parlants : EXCEPTION: System.NullReferenceException: Object reference not set to an instance of an object.     at Microsoft.AnalysisServices.SharePoint.Integration.Redirector.CacheManager.ImageLoad(SPFile spFile, DateTime fileLastModifiedTimestamp, Int32 localeId, String databaseName, String databaseId, ImageLoadMode mode)     at Microsoft.AnalysisServices.SharePoint.Integration.Redirector.BackendRedirectService.LoadDatabase(String loginName, String dataSource, String dataSourceVersion, DateTime fileLastModifiedTimestamp, Int32 localeId, Guid databaseId, String serverEndpointAddress, String[] databasesToUnload, String healthStatisticsForReporting)...

Côté SSAS, les bases sandbox sont bien créées et peuplées. Mais elles ne sont pas accédées et une nouvelle est créée à chaque rafraichissement.

Le support Microsoft, consulté sur le problème, n'a pas pu trouver la solution, bien que ce soit reproductible à volonté...

Pire : la tentative de désinstallation de PowerPivot avec le wizard échoue, et impossible de le réinstaller correctement...

La solution de contournement

Moralité : si jamais vous décidez d'installer PowerPivot pour SharePoint avec une instance de bases de données déjà existante, configurez SharePoint avec l'assistant de configuration SharePoint (SharePoint Products configuration Wizard), et ce avant l'installation de PowerPivot !