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. De ce fait, les extensions de personnalisation Analysis Services fournissent les fonctionnalités qui permettent d'atteindre les objectifs 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 d'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 fonctionnalités.
Contexte de session Les extensions de personnalisation Analysis Services ne sont pas des objets permanents dans l'infrastructure existante et ne requièrent pas un nouveau traitement 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 les 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 de ces fonctionnalités étendues ou la façon de les trouver.
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, qui sont une modification simple et élégante de l'architecture d'assembly managée existante, sont exposées partout dans le modèle objet Analysis Services Microsoft.AnalysisServices.AdomdServer, la syntaxe MDX (Multidimensional Expressions) et les ensembles de lignes de schéma.
Architecture logique
L'architecture des extensions de personnalisation Analysis Services est basée sur l'architecture d'assembly managée 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é PlugInAttribute.[!REMARQUE]
Le .NET Framework définit des attributs personnalisés comme une façon de décrire votre code et affecter le comportement à l'exécution. Pour plus d'informations, consultez la rubrique « Vue d'ensemble des attributs » du Guide du Développeur .NET Framework sur MSDN.
Pour toutes les classes ayant l'attribut personnalisé 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 la génération d'un petit cache d'informations sur la création et la gestion d'extensions de personnalisation, le constructeur de classe s'abonne généralement aux événements SessionOpened et 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 qui sont basés sur les 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 SessionOpened. Lorsqu'un client termine la session sur le serveur, Analysis Services déclenche l'événement SessionClosing.
Les événements de cube sont associés à l'objet de connexion. La connexion à un cube déclenche l'événement CubeOpened. La fermeture de la connexion à un cube, en fermant le cube ou en passant à un autre cube, déclenche un événement CubeClosing.
Traçabilité et gestion des erreurs
Toute l'activité peut être tracée à 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é PlugInAttribute peut être ajouté à vos assemblys personnalisés pour identifier les classes des extensions de personnalisation Analysis Services.
Modifications apportées au modèle objet AdomdServer
Les objets suivants du modèle objet Microsoft.AnalysisServices.AdomdServer ont été améliorés ou ont été ajoutés au modèle.
Nouvelle classe AdomdConnection
La nouvelle classe AdomdConnection expose plusieurs extensions de personnalisation par le biais de propriétés et d'événements.
Propriétés
SessionID, une valeur de chaîne en lecture seule qui représente l'ID de session de la connexion actuelle.
ClientCulture, une référence en lecture seule à la culture du client associée à la session active.
User, une référence en lecture seule à l'interface d'identité représentant l'utilisateur actuel.
Événements
Nouvelles propriétés de la classe Context
La classe Context dispose de deux nouvelles propriétés :
Server, une référence en lecture seule au nouvel objet de serveur.
CurrentConnection, une référence en lecture seule au nouvel objet AdomdConnection.
Nouvelle classe Server
La nouvelle classe Server expose plusieurs extensions de personnalisation par le biais d'événements et de propriétés de classe.
Propriétés
Name, une valeur de chaîne en lecture seule représentant le nom du serveur.
Culture, une référence en lecture seule à la culture globale associée au serveur.
Événements
Classe AdomdCommand
La classe AdomdCommand prend maintenant 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 le jeu n'est évalué qu'au moment de la création. Dynamic signifie que le jeu doit être évalué chaque fois qu'il 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, la colonne scope est ajoutée. Les valeurs de portée sont les suivantes : MDMEMBER_SCOPE_GLOBAL=1, MDMEMBER_SCOPE_SESSION=2.
Sur MDSCHEMA_SETS, la 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.