Share via


Analysis Services Personalization Extensions

Le estensioni della personalizzazione di SQL ServerAnalysis Services rappresentano la struttura di base dell'implementazione di un'architettura plug-in. In un'architettura plug-in è possibile sviluppare dinamicamente nuovi oggetti cubo e funzionalità e condividerli facilmente con gli altri sviluppatori. Di conseguenza, le estensioni della personalizzazione di Analysis Services forniscono la funzionalità che rende possibile raggiungere i seguenti obiettivi:

  • Progettazione e distribuzione dinamiche   Subito dopo la progettazione e la distribuzione delle estensioni della personalizzazione di Analysis Services, gli utenti dispongono dell'accesso agli oggetti e alle funzionalità all'inizio della sessione successiva.

  • Indipendenza dell'interfaccia   Indipendentemente dall'interfaccia utilizzata per creare le estensioni della personalizzazione di Analysis Services, gli utenti possono utilizzare qualsiasi interfaccia per accedere agli oggetti e alle funzionalità.

  • Contesto della sessione   Le estensioni della personalizzazione di Analysis Services non sono oggetti permanenti nell'infrastruttura esistente e non richiedono la rielaborazione del cubo. Vengono esposti e creati per l'utente al momento della connessione al database e rimangono disponibili per la durata della sessione dell'utente.

  • Distribuzione rapida   È possibile condividere le estensioni della personalizzazione di Analysis Services con altri sviluppatori di software senza la necessità di specifiche dettagliate su dove o come trovare la funzionalità estesa.

Le estensioni della personalizzazione di Analysis Services possono essere utilizzate per diversi scopi. Ad esempio, la propria azienda dispone di vendite che hanno valute diverse. Viene creato un membro calcolato che restituisce le vendite consolidate nella valuta locale della persona che accede al cubo. Tale membro viene creato come estensione della personalizzazione. Il membro calcolato viene quindi condiviso con un gruppo di utenti. Una volta condiviso, gli utenti dispongono dell'accesso immediato al membro calcolato non appena si connettono al server, anche se non utilizzano la stessa interfaccia utilizzata durante la creazione del membro calcolato.

Le estensioni della personalizzazione di Analysis Services rappresentano una semplice ed elegante modifica all'architettura dell'assembly gestita esistente e vengono esposte nell'intero modello di oggetti Analysis ServicesMicrosoft.AnalysisServices.AdomdServer, nella sintassi MDX e nei set di righe degli schemi.

Architettura logica

L'architettura delle estensioni della personalizzazione di Analysis Services è basata sull'architettura dell'assembly gestita e sui quattro elementi di base seguenti:

  • Attributo personalizzato [PlugInAttribute]
    Quando si avvia il servizio, Analysis Services carica gli assembly necessari e determina quali classi dispongono dell'attributo personalizzato PlugInAttribute.

    [!NOTA]

    .NET Framework definisce gli attributi personalizzati come un modo per descrivere il codice e influisce sul comportamento in fase di esecuzione. Per ulteriori informazioni, vedere l'argomento",Cenni preliminari sugli attributi" nella Guida per gli sviluppatori di .NET Framework in MSDN.

    Per tutte le classi con l'attributo personalizzato PlugInAttribute, Analysis Services richiama i costruttori predefiniti. La richiamata di tutti i costruttori all'avvio fornisce un percorso comune, indipendente dalle attività dell'utente, dal quale è possibile generare nuovi oggetti.

    Oltre a generare una piccola cache di informazioni sulla creazione e sulla gestione di estensioni della personalizzazione, in genere il costruttore sottoscrive gli eventi SessionOpened e SessionClosing. Se la sottoscrizione di tali eventi non riesce, la classe potrebbe essere erroneamente contrassegnata per la pulizia da parte del Garbage Collector del Common Language Runtime.

  • Contesto di sessione
    Per gli oggetti basati sulle estensioni della personalizzazione, Analysis Services crea un ambiente di esecuzione durante la sessione client e genera dinamicamente la maggior parte degli oggetti dell'ambiente. Come qualsiasi altro assembly CLR, tale ambiente di esecuzione dispone anche dell'accesso ad altre funzioni e stored procedure. Al termine della sessione utente, Analysis Services rimuove gli oggetti generati dinamicamente e chiude l'ambiente di esecuzione.

  • Eventi
    La creazione degli oggetti viene attivata dagli eventi di sessione On-Cube-OpenedCubeOpened e On-Cube-ClosingCubeClosing.

    La comunicazione tra client e server si verifica attraverso eventi specifici. Tali eventi informano il client delle situazioni che portano alla generazione degli oggetti del client. L'ambiente del client viene creato dinamicamente utilizzando due set di eventi: eventi di sessione ed eventi del cubo.

    Gli eventi di sessione sono associati all'oggetto server. Quando un client accede a un server, Analysis Services crea una sessione e genera l'evento SessionOpened. Quando un client termina la sessione nel server, Analysis Services crea una sessione e genera l'evento SessionClosing.

    Gli eventi del cubo sono associati all'oggetto connessione. La connessione a un cubo genera l'evento CubeOpened. La chiusura della connessione a un cubo, tramite la chiusura del cubo o il passaggio a un cubo diverso, genera un evento CubeClosing.

  • Tracciabilità e gestione degli errori
    Tutte le attività sono tracciabili utilizzando SQL Server Profiler. Gli errori non gestiti vengono segnalati al registro eventi di Windows.

La creazione e la gestione degli oggetti sono indipendenti dall'architettura e rappresentano l'unica responsabilità degli sviluppatori degli oggetti.

Base dell'infrastruttura

Le estensioni della personalizzazione di Analysis Services sono basate su componenti esistenti. Di seguito è riportato un riepilogo dei miglioramenti forniti dalla funzionalità delle estensioni della personalizzazione.

Assembly

L'attributo personalizzato PlugInAttribute può essere aggiunto agli assembly personalizzati per identificare le classi delle estensioni della personalizzazione di Analysis Services.

Modifiche al modello di oggetti AdomdServer

Gli oggetti seguenti nel modello di oggetti Microsoft.AnalysisServices.AdomdServer sono stati migliorati o aggiunti al modello.

Nuova classe AdomdConnection

La classe AdomdConnection è nuova ed espone molte estensioni della personalizzazione tramite proprietà ed eventi.

Proprietà

  • SessionID, valore della stringa di sola lettura che rappresenta l'ID della sessione della connessione corrente.

  • ClientCulture, riferimento di sola lettura alle impostazioni internazionali del client associate alla sessione corrente.

  • User, riferimento di sola lettura all'interfaccia di identità che rappresenta l'utente corrente.

Eventi

Nuove proprietà nella classe del contesto

La classe Context ha due nuove proprietà:

Nuova classe server

La classe Server è nuova ed espone molte estensioni della personalizzazione tramite proprietà ed eventi della classe.

Proprietà

  • Name, valore della stringa di sola lettura che rappresenta il nome del server.

  • Culture, riferimento di sola lettura alla lingua globale associata al server.

Eventi

Classe AdomdCommand

Estensioni MDX e miglioramenti

Il comando CREATE MEMBER è stato migliorato con le proprietà caption, display_folder e associated_measure_group.

Il comando UPDATE MEMBER è stato aggiunto per evitare di ricreare il membro quando è necessario un aggiornamento, con la conseguente perdita di precedenza nella risoluzione dei calcoli. Gli aggiornamenti non sono in grado di modificare l'ambito del membro calcolato, di spostare il membro calcolato in un elemento padre diverso o di definire un diverso solveorder.

Il comando CREATE SET è stato migliorato con le proprietà caption e display_folder e con la nuova parola chiave STATIC | DYNAMIC. Static indica che il set viene valutato solo al momento della creazione. Dynamic indica che il set deve essere valutato tutte le volte che viene utilizzato in una query. Se la parola chiave viene omessa, il valore predefinito è STATIC.

I comandi CREATE KPI e DROP KPI sono stati aggiunti alla sintassi MDX. Gli indicatori KPI possono essere creati dinamicamente da qualsiasi script MDX.

Estensioni dei set di righe degli schemi

In MDSCHEMA_MEMBERS è stata aggiunta la colonna scope. I valori di ambito sono i seguenti: MDMEMBER_SCOPE_GLOBAL=1, MDMEMBER_SCOPE_SESSION=2.

In MDSCHEMA_SETS è stata aggiunta la colonna set_evaluation_context. I valori di contesto di valutazione dei set sono i seguenti: MDSET_RESOLUTION_STATIC = 1, MDSET_RESOLUTION_DYNAMIC = 2.

In MDSCHEMA_KPIS è stata aggiunta la colonna Scope. I valori di ambito sono i seguenti: MDKPI_SCOPE_GLOBAL=1, MDKPI_SCOPE_SESSION=2.