Partager via


Extensions de personnalisation Analysis Services

Les extensions de personnalisation SQL Server Analysis Services sont la base de l'idée d'implémentation d'une architecture de plug-in. Dans une architecture de plug-in, vous pouvez développer dynamiquement des nouveaux objets de cube et de nouvelles fonctionnalités, et les partager facilement avec d'autres développeurs. Par conséquent, les extensions de personnalisation Analysis Services fournissent les fonctionnalités qui permettent d’obtenir les éléments suivants :

  • Conception et déploiement dynamiques Immédiatement après avoir conçu et déployé des extensions de personnalisation Analysis Services, les utilisateurs ont accès aux objets et fonctionnalités au début de la session utilisateur suivante.

  • Indépendance de l’interface Quelle que soit l’interface que vous utilisez pour créer les extensions de personnalisation Analysis Services, les utilisateurs peuvent utiliser n’importe quelle interface pour accéder aux objets et aux fonctionnalités.

  • Contexte de session Les extensions de personnalisation Analysis Services ne sont pas des objets permanents dans l’infrastructure existante et ne nécessitent pas de retraitement du cube. Elles sont exposées et créées pour l'utilisateur au moment où il se connecte à la base de données, et restent disponibles pour toute la durée de cette session utilisateur.

  • Distribution rapide Partagez des extensions de personnalisation Analysis Services avec d’autres développeurs de logiciels sans avoir à entrer dans des spécifications détaillées sur l’emplacement ou la façon de trouver cette fonctionnalité étendue.

Les extensions de personnalisation Analysis Services ont de nombreuses utilisations. Par exemple, votre société effectue des ventes qui impliquent des devises différentes. Vous créez un membre calculé qui retourne les ventes consolidées dans la devise locale de la personne qui accède au cube. Vous créez ce membre en tant qu'extension de personnalisation. Vous partagez alors ce membre calculé avec un groupe d'utilisateurs. Une fois le membre calculé partagé, ces utilisateurs ont un accès immédiat à celui-ci dès qu'ils se connectent au serveur. Ils bénéficient de cet accès même s'ils n'utilisent pas la même interface que celle utilisée pour créer le membre calculé.

Les extensions de personnalisation Analysis Services sont une modification simple et élégante de l’architecture d’assembly managé existante et sont exposées dans le modèle objet Microsoft.AnalysisServices.AdomdServer Analysis Services, la syntaxe MDX (Multidimensional Expressions) et les ensembles de lignes de schéma Analysis Services.

Architecture logique

L’architecture des extensions de personnalisation Analysis Services est basée sur l’architecture d’assembly managé et les quatre éléments de base suivants :

L'attribut personnalisé [PlugInAttribute]
Lors du démarrage du service, Analysis Services charge les assemblys requis et détermine les classes qui ont l’attribut personnalisé Microsoft.AnalysisServices.AdomdServer.PlugInAttribute .

Notes

Le .NET Framework définit des attributs personnalisés comme un moyen de décrire votre code et d’affecter le comportement au moment de l’exécution. Pour plus d’informations, consultez la rubrique « Vue d’ensemble des attributs » dans le Guide du développeur .NET Framework sur MSDN.

Pour toutes les classes avec l’attribut personnalisé Microsoft.AnalysisServices.AdomdServer.PlugInAttribute , Analysis Services appelle leurs constructeurs par défaut. L'appel de tous les constructeurs au démarrage fournit un emplacement commun à partir duquel générer de nouveaux objets et qui est indépendant de toute activité des utilisateurs.

En plus de créer un petit cache d’informations sur la création et la gestion des extensions de personnalisation, le constructeur de classe s’abonne généralement aux événements Microsoft.AnalysisServices.AdomdServer.Server.SessionOpened et Microsoft.AnalysisServices.AdomdServer.Server.SessionClosing . S'il ne s'abonne pas à ces événements, la classe peut être marquée de manière appropriée en vue d'être nettoyée par le garbage collector du CLR (Common Language Runtime).

Contexte de session
Pour les objets basés sur des extensions de personnalisation, Analysis Services crée un environnement d’exécution pendant la session cliente et génère dynamiquement la plupart de ces objets dans cet environnement. Comme tout autre assembly CLR, cet environnement d'exécution a également accès aux autres fonctions et procédures stockées. Lorsque la session utilisateur se termine, Analysis Services supprime les objets créés dynamiquement et ferme l’environnement d’exécution.

Événements
La création d'objets est déclenchée par les événements de session On-Cube-OpenedCubeOpened et On-Cube-ClosingCubeClosing.

La communication entre le client et le serveur se produit par le biais d'événements spécifiques. Ces événements indiquent au client les situations qui conduisent à la génération des objets du client. L'environnement du client est créé dynamiquement à l'aide de deux ensembles d'événements : événements de session et événements de cube.

Les événements de session sont associés à l'objet de serveur. Lorsqu’un client se connecte à un serveur, Analysis Services crée une session et déclenche l’événement Microsoft.AnalysisServices.AdomdServer.Server.SessionOpened . Lorsqu’un client termine la session sur le serveur, Analysis Services déclenche l’événement Microsoft.AnalysisServices.AdomdServer.Server.SessionClosing .

Les événements de cube sont associés à l'objet de connexion. La connexion à un cube déclenche l’événement Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeOpened . La fermeture de la connexion à un cube, soit en fermant le cube, soit en passant à un autre cube, déclenche un événement Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeClosing .

Traçabilité et gestion des erreurs
Toutes les activités sont traçables à l’aide de SQL Server Profiler. Les erreurs non gérées sont consignées dans le journal des événements Windows.

La création et la gestion de tous les objets sont indépendantes de cette architecture. Elles sont sous l'entière responsabilité des développeurs des objets.

Base de l'infrastructure

Les extensions de personnalisation Analysis Services sont basées sur des composants existants. Voici un récapitulatif des améliorations qui fournissent les fonctionnalités des extensions de personnalisation.

Assemblys

L’attribut personnalisé , Microsoft.AnalysisServices.AdomdServer.PlugInAttribute, peut être ajouté à vos assemblys personnalisés pour identifier les classes d’extensions de personnalisation Analysis Services.

Modifications apportées au modèle objet AdomdServer

Les objets suivants dans le modèle objet Microsoft.AnalysisServices.AdomdServer ont été améliorés ou ajoutés au modèle.

Nouvelle classe AdomdConnection

La classe Microsoft.AnalysisServices.AdomdServer.AdomdConnection est nouvelle et expose plusieurs extensions de personnalisation par le biais des propriétés et des événements.

Propriétés

Événements

Nouvelles propriétés de la classe Context

La classe Microsoft.AnalysisServices.AdomdServer.Context a deux nouvelles propriétés :

Nouvelle classe Server

La classe Microsoft.AnalysisServices.AdomdServer.Server est nouvelle et expose plusieurs extensions de personnalisation par le biais des propriétés et des événements de classe.

Propriétés

Événements

Classe AdomdCommand

La classe Microsoft.AnalysisServices.AdomdServer.AdomdCommand prend désormais en charge les commandes MDX suivantes :

Extensions MDX et améliorations

La commande CREATE MEMBER est améliorée au moyen de la propriété caption, de la propriété display_folder et de la propriété associated_measure_group.

La commande UPDATE MEMBER est ajoutée pour éviter la récréation du membre lorsqu'une mise à jour est nécessaire avec la perte de priorité conséquente pour la résolution des calculs. Les mises à jour ne peuvent pas modifier la portée du membre calculé, déplacer le membre calculé vers un autre parent ou définir un solveorder différent.

La commande CREATE SET est améliorée au moyen la propriété caption, de la propriété display_folder et du nouveau mot clé STATIC | DYNAMIC. Statique signifie que l’ensemble est évalué uniquement au moment de la création. Dynamique signifie que le jeu est évalué chaque fois que le jeu est utilisé dans une requête. La valeur par défaut est STATIC si un mot clé est omis.

Les commandes CREATE KPI et DROP KPI sont ajoutées à la syntaxe MDX. Les indicateurs de performance clés peuvent être créés dynamiquement à partir de tout script MDX.

Extensions d'ensembles de lignes de schéma

Sur MDSCHEMA_MEMBERS colonne d’étendue est ajoutée. Les valeurs de portée sont les suivantes : MDMEMBER_SCOPE_GLOBAL=1, MDMEMBER_SCOPE_SESSION=2.

Sur MDSCHEMA_SETS colonne set_evaluation_context est ajoutée. Les valeurs de contexte d'évaluation du jeu sont les suivantes : MDSET_RESOLUTION_STATIC = 1, MDSET_RESOLUTION_DYNAMIC = 2.

Sur MDSCHEMA_KPIS, la colonne de portée est ajoutée. Les valeurs de portée sont les suivantes : MDKPI_SCOPE_GLOBAL=1, MDKPI_SCOPE_SESSION=2.