[SSAS] Activer l’accès HTTP avec msmdpump.dll

Il arrive fréquemment d’hoster sur un serveur web une application (un site web effectuant des prédictions par exemple) qui sera amenée à se connecter à un serveur Analysis Services distant. Si le compte de l’application pool de l’application est administrateur d’AS, autrement dit dans le cas d’une base de compte commune type AD entre les deux serveurs, il n’y a aucun problème.

En revanche, cela devient beaucoup plus fâcheux dans le cas de deux serveurs situés dans des domaines différents. La méthode la plus simple (celle que je conseille donc) est de passer par une connection HTTP sur le serveur AS. Cela se configure assez rapidement, il vous suffit juste d’un IIS sur votre serveur hostant AS.

  1. Allez récupérer l’extension ISAPI (Internet Server Application Programming Interface = composant IIS) nommé msmdpump.dll, situé dans le répertoire \MSSQL.2\OLAP\bin\isapi\ ainsi que son fichier de configuration homonyme.
  2. Copiez le dans un dossier nommé par exemple ASoverHTTP dans le dossier IIS (\inetpub\wwwroot).

Nous allons maintenant créer un site web sur ce dossier. Ce site aura une seule fonction: permettre d’appeller cette dll avec les droits d’un administrateur de la base AS.
Maintenant, un peu de configuration IIS: ouvrez l’utilitaire de configuration de IIS (Démarrer – Exécuter – inetmgr) . Selon votre configuration vous pourrez choisir une des options suivantes
  • Créer un nouvel application pool
  • Utiliser l’application pool existant (inconvénient: sachant que l’on va paramétrer la réaction de l’applicatif aux extensions de type dll pour exécuter la msdmpump, ce comportement affectera vos autres sites)

Selon le cas vous aurez alors créé soit un WebSite soit un VD sur un nouvel ou existant application pool. Je l’ai appellé ASoverHTTP.

Ouvrez les propriétés de votre site (ou VD) et allez dans Home Directory ou VD Setting c’est selon (là ou vous pouvez choisir l’application pool).

Cliquez Edit dans la zone des Application Settings. Cette fenêtre s’ouvre. Vous allez maintenant dire que dans le contexte de votre application, une extension .dll exécute l’extention ISAPI (autrement dit la DLL) msdmpump.dll.


Cliquez Add, choisissez la DLL, affectez l’extension .dll et validez.

Maintenant allez dans Directory Security. Nous allons configurer le compte AS comme compte de l’application (i.e. qui effectuera l’appel à la DLL). Cliquez sur le bouton du haut, Edit… dans Authentication and Access Control.


Cela vous ouvre la fenêtre suivante:



Remplacez le compte anonyme par défaut, IUSR_ par un compte ayant les drois adéquats sur SSAS. Validez.

Retournez dans la console d’admin IIS. Ajoutez une web service extension sur votre DLL, nommez la comme bon vous semble et activez là. Validez.

C’est terminé pour le serveur. Maintenant dans votre application Web, au lieu de vous spécifier serveur\instance dans votre connection string ADOMD, vous utiliserez http://serveur/ASoverHTTP/msmdpump.dll. Ce sera bien votre compte ASP qui exécutera cet appel mais l’identité du user exécutant la demande de connection sera celle de celui hostant la DLL dans IIS, à savoir l’user que vous avez renseigné pour l’accès anonyme.

En espérant que cela puisse vous être utile… A bientôt!

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s