Extensões de personalização do Analysis Services
As extensões de personalização do SQL Server Analysis Services são a base do conceito de implementação de uma arquitetura de plug-in. Em uma arquitetura de plug-in, é possível desenvolver novos objetos de cubo e funcionalidades de modo dinâmico e compartilhá-los com outros desenvolvedores. Dessa forma, as extensões de personalização do Analysis Services fornecem a funcionalidade que possibilita alcançar o seguinte:
Design dinâmico e implantação Imediatamente após criar e implantar extensões de personalização do Analysis Services, os usuários terão acesso aos objetos e funcionalidades no início da próxima sessão de usuário.
Independência da interface Independentemente da interface que você usa para criar as extensões de personalização do Analysis Services, os usuários podem usar qualquer interface para acessar os objetos e a funcionalidade.
Contexto da sessão As extensões de personalização do Analysis Services não são objetos permanentes na infraestrutura existente e não exigem que o cubo seja reprocessado. Elas são expostas e criadas para o usuário quando ele se conecta ao banco de dados e permanecem disponíveis durante toda a sessão de usuário.
Distribuição rápida Compartilhe extensões de personalização do Analysis Services com outros desenvolvedores de software sem precisar entrar em especificações detalhadas sobre onde ou como encontrar essa funcionalidade estendida.
As extensões de personalização do Analysis Services têm muitos usos. Por exemplo, sua empresa faz vendas que envolvem moedas diferentes. Você cria um membro calculado que retorna as vendas consolidadas na moeda local da pessoa que está acessando o cubo. Esse membro é criado como uma extensão de personalização. Em seguida, esse membro calculado é compartilhado com um grupo de usuários. Uma vez compartilhado, esses usuários têm acesso imediato ao membro calculado assim que se conectam ao servidor. Eles têm acesso mesmo se não estiverem usando a mesma interface que foi usada para criar o membro calculado.
As extensões de personalização do Analysis Services são uma modificação simples e elegante na arquitetura de assembly gerenciada existente e são expostas em todo o modelo de objeto Microsoft.AnalysisServices.AdomdServer do Analysis Services, sintaxe MDX (Expressões Multidimensionais) e conjuntos de linhas de esquema.
Arquitetura lógica
A arquitetura das extensões de personalização do Analysis Services baseia-se na arquitetura do assembly gerenciado e nos quatro elementos básicos a seguir:
O atributo personalizado [PlugInAttribute]
Ao iniciar o serviço, o Analysis Services carrega os assemblies necessários e determina quais classes têm o atributo personalizado Microsoft.AnalysisServices.AdomdServer.PlugInAttribute .
Observação
O .NET Framework define atributos personalizados como uma maneira de descrever seu código e afetar o comportamento em tempo de execução. Para obter mais informações, consulte o tópico "Visão geral de atributos", no Guia do desenvolvedor do .NET Framework sobre o MSDN.
Para todas as classes com o atributo personalizado Microsoft.AnalysisServices.AdomdServer.PlugInAttribute , o Analysis Services invoca seus construtores padrão. A invocação de todos os construtores na inicialização fornece um local comum a partir do qual serão criados novos objetos e que é independente de todas as atividades de usuário.
Além de criar um pequeno cache de informações sobre criação e gerenciamento de extensões de personalização, o construtor de classe normalmente assina os eventos Microsoft.AnalysisServices.AdomdServer.Server.SessionOpened e Microsoft.AnalysisServices.AdomdServer.Server.SessionClosing . A não assinatura desses eventos pode fazer com que a classe seja marcada inadequadamente para ser limpa pelo coletor de lixo CLR (Common Language Runtime).
Contexto de sessão
Para os objetos baseados em extensões de personalização, o Analysis Services cria um ambiente de execução durante a sessão do cliente e cria dinamicamente a maioria desses objetos nesse ambiente. Como qualquer outro assembly CLR, esse ambiente de execução também tem acesso a outras funções e procedimentos armazenados. Quando a sessão do usuário termina, o Analysis Services remove os objetos criados dinamicamente e fecha o ambiente de execução.
Eventos
A criação de objetos é acionada pelos eventos de sessão On-Cube-OpenedCubeOpened
e On-Cube-ClosingCubeClosing
.
A comunicação entre o cliente e o servidor acontece através de eventos específicos. Esses eventos alertam o cliente sobre as situações que levam à criação de objetos do cliente. O ambiente do cliente é criado dinamicamente com dois conjuntos de eventos: eventos de sessão e eventos de cubo.
Os eventos de sessão são associados ao objeto de servidor. Quando um cliente faz logon em um servidor, o Analysis Services cria uma sessão e dispara o evento Microsoft.AnalysisServices.AdomdServer.Server.SessionOpened . Quando um cliente encerra a sessão no servidor, o Analysis Services dispara o evento Microsoft.AnalysisServices.AdomdServer.Server.SessionClosing .
Os eventos de cubo são associados ao objeto de conexão. Conectar-se a um cubo dispara o evento Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeOpened . Fechar a conexão com um cubo, fechando o cubo ou alterando para um cubo diferente, dispara um evento Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeClosing .
Rastreamento e manipulação de erros
Todas as atividades podem ser rastreadas usando SQL Server Profiler. Os erros não manipulados são relatados no log de evento do Windows.
Todas as atividades de criação e gerenciamento de objetos são independentes dessa arquitetura são de responsabilidade exclusiva dos desenvolvedores dos objetos.
Base da infraestrutura
As extensões de personalização do Analysis Services são baseadas em componentes existentes. Veja, a seguir, um resumo de aprimoramentos e melhorias que fornecem a funcionalidade de extensões de personalização.
Assemblies
O atributo personalizado , Microsoft.AnalysisServices.AdomdServer.PlugInAttribute, pode ser adicionado aos assemblies personalizados para identificar classes de extensões de personalização do Analysis Services.
Alterações no modelo de objeto AdomdServer
Os objetos a seguir no modelo de objeto Microsoft.AnalysisServices.AdomdServer foram aprimorados ou adicionados ao modelo.
Nova classe AdomdConnection
A classe Microsoft.AnalysisServices.AdomdServer.AdomdConnection é nova e expõe várias extensões de personalização por meio de propriedades e eventos.
Propriedades
Microsoft.AnalysisServices.AdomdServer.AdomdConnection.SessionID*, um valor de cadeia de caracteres somente leitura que representa a ID da sessão da conexão atual.
Microsoft.AnalysisServices.AdomdServer.AdomdConnection.ClientCulture*, uma referência somente leitura à cultura do cliente associada à sessão atual.
Microsoft.AnalysisServices.AdomdServer.AdomdConnection.User*, uma referência somente leitura à interface de identidade que representa o usuário atual.
Eventos
Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeOpened
Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeClosing
Novas propriedades na classe Context
A classe Microsoft.AnalysisServices.AdomdServer.Context tem duas novas propriedades:
Microsoft.AnalysisServices.AdomdServer.Context.Server*, uma referência somente leitura ao novo objeto de servidor.
Microsoft.AnalysisServices.AdomdServer.Context.CurrentConnection*, uma referência somente leitura ao novo objeto Microsoft.AnalysisServices.AdomdServer.AdomdConnection .
Nova classe Server
A classe Microsoft.AnalysisServices.AdomdServer.Server é nova e expõe várias extensões de personalização por meio de propriedades e eventos de classe.
Propriedades
Microsoft.AnalysisServices.AdomdServer.Server.Name*, um valor de cadeia de caracteres somente leitura que representa o nome do servidor.
Microsoft.AnalysisServices.AdomdServer.Server.Culture*, uma referência somente leitura à cultura global associada ao servidor.
Eventos
Classe AdomdCommand
A classe Microsoft.AnalysisServices.AdomdServer.AdomdCommand agora dá suporte aos seguintes comandos MDX:
Extensões e aprimoramentos MDX
O comando CREATE MEMBER foi aprimorado com as propriedades caption
, display_folder
e associated_measure_group
.
O comando UPDATE MEMBER foi adicionado para evitar a recriação de membros quando uma atualização é necessária com a perda de precedência resultante na solução de cálculos. As atualizações não podem alterar o escopo do membro calculado, mover o membro calculado para um pai diferente ou definir um solveorder
diferente.
O comando CREATE SET foi aprimorado com as propriedades caption
e display_folder
e a nova palavra-chave STATIC | DYNAMIC
. Estático significa que o conjunto é avaliado somente no momento da criação. Dinâmico significa que o conjunto é avaliado sempre que o conjunto é usado em uma consulta. O valor padrão será STATIC
se uma palavra-chave for omitida.
Os comandos CREATE KPI e DROP KPI foram adicionados à sintaxe MDX. KPIs podem ser criados dinamicamente a partir de qualquer script MDX.
Extensões de conjuntos de linhas de esquema
Em MDSCHEMA_MEMBERS coluna de escopo é adicionada. Os valores de escopo são: MDMEMBER_SCOPE_GLOBAL = 1, MDMEMBER_SCOPE_SESSION = 2.
Em MDSCHEMA_SETS coluna set_evaluation_context é adicionada. Defina os valores de contexto de avaliação do seguinte modo: MDSET_RESOLUTION_STATIC = 1, MDSET_RESOLUTION_DYNAMIC = 2.
Em MDSCHEMA_KPIS, a coluna de escopo foi adicionada. Os valores de escopo são: MDKPI_SCOPE_GLOBAL = 1, MDKPI_SCOPE_SESSION = 2.