Partager via


Extensions de personnalisation des services d'analyse

Les extensions de personnalisation SQL Server Analysis Services constituent la base de l’idée d’implémenter une architecture de plug-in. Dans une architecture de plug-in, vous pouvez développer de nouveaux objets et fonctionnalités de cube dynamiquement 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 le retraitement du cube. Ils deviennent exposés et créés pour l’utilisateur au moment où l’utilisateur se connecte à la base de données et restent disponibles pour 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 entreprise a des ventes qui impliquent différentes devises. 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 ensuite ce membre calculé à un groupe d’utilisateurs. Une fois partagés, ces utilisateurs ont un accès immédiat au membre calculé dès qu’ils se connectent au serveur. Ils ont 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 l’ensemble du modèle objet Analysis Services Microsoft.AnalysisServices.AdomdServer , de la syntaxe MDX (Multidimensional Expressions) et des 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é et les quatre éléments de base suivants :

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 .

Remarque

Le .NET Framework définit des attributs personnalisés comme un moyen de décrire votre code et d’affecter le comportement d’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é utilisateur.

Outre la création d’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 . L’échec de l’abonnement à ces événements peut entraîner une marque inappropriée de la classe pour le nettoyage par le garbage collector clR (Common Language Runtime).

Contexte de session
Pour ces 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 à d’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 On-Cube-OpenedCubeOpened de session et On-Cube-ClosingCubeClosing.

La communication entre le client et le serveur se produit via des événements spécifiques. Ces événements rendent le client conscient des situations qui mènent à la génération des objets du client. L’environnement du client est créé dynamiquement à l’aide de deux ensembles d’événements : les événements de session et les événements de cube.

Les événements de session sont associés à l’objet 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 met fin à 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 traceables à l’aide de SQL Server Profiler. Les erreurs non gérées sont signalées dans le journal des événements Windows.

Toutes les créations et la gestion d’objets sont indépendantes de cette architecture et sont la seule responsabilité des développeurs des objets.

Bases de l’infrastructure

Les extensions de personnalisation Analysis Services sont basées sur des composants existants. Voici un résumé des améliorations et améliorations qui fournissent les fonctionnalités d’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.

New AdomdConnection, classe

La classe Microsoft.AnalysisServices.AdomdServer.AdomdConnection est nouvelle et expose plusieurs extensions de personnalisation via les propriétés et les événements.

Propriétés

Événements

Nouvelles propriétés dans 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 de classe et des événements.

Propriétés

Événements

Classe AdomdCommand

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

Améliorations et extensions MDX

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

La commande UPDATE MEMBER est ajoutée pour éviter la recréation de membre lorsqu’une mise à jour est nécessaire avec la perte de priorité qui en résulte dans la résolution des calculs. Les mises à jour ne peuvent pas modifier l’étendue du membre calculé, déplacer le membre calculé vers un autre parent ou définir un autre solveordermembre.

La commande CREATE SET est améliorée avec la propriété, la captiondisplay_folder propriété et le nouveau STATIC | DYNAMIC mot clé. Statique signifie que le jeu est évalué uniquement au moment de la création. Dynamique signifie que le jeu est évalué chaque fois que l’ensemble 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 n’importe quel script MDX.

Extensions d’ensembles de lignes de schéma

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

Sur MDSCHEMA_SETS colonne set_evaluation_context est ajoutée. Définissez les valeurs de contexte d’évaluation comme suit : MDSET_RESOLUTION_STATIC = 1, MDSET_RESOLUTION_DYNAMIC = 2.

Sur MDSCHEMA_KPIS colonne d’étendue est ajoutée. Les valeurs d’étendue sont les suivantes : MDKPI_SCOPE_GLOBAL=1, MDKPI_SCOPE_SESSION=2.