Extensões de personalização do Analysis Services
As extensões de personalização do SQL ServerAnalysis 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. Desse modo, as extensões de personalização do Analysis Services fornecem a funcionalidade que possibilita fazer o seguinte:
Projeto e implantação dinâmicos Imediatamente depois de projetar e implantar as extensões de personalização do Analysis Services, os usuários têm acesso a objetos e funcionalidades no início da próxima sessão de usuário.
Independência da interface Independentemente da interface usada para criar as extensões de personalização do Analysis Services, os usuários podem usar qualquer interface para acessar objetos e funcionalidades.
Contexto de sessão As extensões de personalização do Analysis Services não são objetos permanentes na infra-estrutura existente e não precisam do cubo para ser reprocessadas. 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.
Rápida distribuição Compartilhe as extensões de personalização do Analysis Services com outros desenvolvedores de software sem precisar fornecer especificações detalhadas sobre onde e 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 fazem uma modificação simples e discreta na arquitetura de assemblies gerenciados existente e são expostas através do modelo de objeto Analysis ServicesMicrosoft.AnalysisServices.AdomdServer, da sintaxe MDX e de conjuntos de linhas de esquema.
Arquitetura lógica
A arquitetura das extensões de personalização do Analysis Services baseia-se na arquitetura de assemblies gerenciados 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 PlugInAttribute.Observação O .NET Framework define atributos personalizados como um modo de descrever seu código e afetar 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 no MSDN.
Para todas as classes com o atributo personalizado 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 a geração e o gerenciamento de extensões de personalização, o construtor de classe normalmente assina os eventos SessionOpened e 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 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 de 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 se conecta em um servidor, o Analysis Services cria uma sessão e aciona o evento SessionOpened. Quando um cliente termina a sessão no servidor, o Analysis Services aciona o evento SessionClosing.
Os eventos de cubo são associados ao objeto de conexão. A conexão a um cubo aciona o evento CubeOpened. O encerramento da conexão com um cubo, seja fechando o cubo ou mudando para um cubo diferente, aciona um evento CubeClosing.
Rastreamento e manipulação de erros
Todas as atividades podem ser rastreadas com 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 infra-estrutura
As extensões de personalização do Analysis Services baseiam-se 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, PlugInAttribute, pode ser adicionado aos seus assemblies personalizados para identificar as classes de extensões de personalização do Analysis Services.
Alterações no modelo de objeto AdomdServer
Os objetos a seguir do modelo de objeto Microsoft.AnalysisServices.AdomdServer foram aprimorados ou adicionados ao modelo.
Nova classe AdomdConnection
A classe AdomdConnection é nova e expõe várias extensões de personalização por propriedades e eventos.
Propriedades
SessionID, um valor de cadeia de caracteres somente leitura que representa a ID de sessão da conexão atual.
ClientCulture, uma referência somente leitura para a cultura de cliente associada à sessão atual.
User, uma referência somente leitura para a interface de identidade que representa o usuário atual.
Eventos
Novas propriedades na classe Context
A classe Context tem duas propriedades novas:
Server, uma referência somente leitura para o novo objeto de servidor.
CurrentConnection, uma referência somente leitura para o novo objeto AdomdConnection.
Nova classe Server
A classe Server é nova e expõe várias extensões de personalização por propriedades e eventos de classe.
Propriedades
Name, um valor de cadeia de caracteres somente leitura que representa o nome do servidor.
Culture, uma referência somente leitura para a cultura global associada ao servidor.
Eventos
Classe AdomdCommand
A classe 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 de criação. Dinâmico significa que o conjunto é avaliado sempre que é 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, a coluna scope foi adicionada. Os valores de escopo são: MDMEMBER_SCOPE_GLOBAL = 1, MDMEMBER_SCOPE_SESSION = 2.
Em MDSCHEMA_SETS, a coluna set_evaluation_context foi 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.