Compartilhar via


Extensões de personalização do Analysis Services

As extensões de personalização do SQL Server Analysis Services são a base da ideia de implementar uma arquitetura de plug-in. Em uma arquitetura de plug-in, você pode desenvolver novos objetos de cubo e funcionalidade dinamicamente e compartilhá-los facilmente com outros desenvolvedores. Dessa forma, as extensões de personalização do Analysis Services fornecem a funcionalidade que possibilita alcançar o seguinte:

  • Design e implantação dinâmicos Imediatamente após você projetar 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 do 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 de 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. Eles são expostos e criados para o usuário no momento em que o usuário se conecta ao banco de dados e permanecem disponíveis durante a sessão do 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 tem 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. Você cria esse membro como uma extensão de personalização. Em seguida, você compartilha esse membro calculado para um grupo de usuários. Depois de compartilhados, 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 a usada para criar o membro calculado.

As extensões de personalização do Analysis Services são uma modificação simples e elegante da 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 MSDN.

Para todas as classes com o atributo personalizado Microsoft.AnalysisServices.AdomdServer.PlugInAttribute , o Analysis Services invoca seus construtores padrão. Invocar todos os construtores na inicialização fornece um local comum do qual criar novos objetos e que seja independente de qualquer atividade do usuário.

Além de criar um pequeno cache de informações sobre como criar e gerenciar extensões de personalização, o construtor de classe normalmente assina os eventos Microsoft.AnalysisServices.AdomdServer.Server.SessionOpened e Microsoft.AnalysisServices.AdomdServer.Server.SessionClosing . Não assinar esses eventos pode fazer com que a classe seja marcada inadequadamente para limpeza 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. Assim 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 objeto é disparada pelos eventos On-Cube-OpenedCubeOpened de sessão e On-Cube-ClosingCubeClosing.

A comunicação entre o cliente e o servidor ocorre por meio de eventos específicos. Esses eventos tornam o cliente ciente das situações que levam à build dos objetos do cliente. O ambiente do cliente é criado dinamicamente usando dois conjuntos de eventos: eventos de sessão e eventos de cubo.

Os eventos de sessão são associados ao objeto do 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 tratamento de erros
Todas as atividades podem ser rastreadas usando o SQL Server Profiler. Erros sem tratamento são relatados ao log de eventos do Windows.

Toda a criação e gerenciamento de objetos é independente dessa arquitetura e é responsabilidade exclusiva dos desenvolvedores dos objetos.

Fundações de infraestrutura

As extensões de personalização do Analysis Services são baseadas em componentes existentes. Veja a seguir um resumo dos aprimoramentos e melhorias que fornecem a funcionalidade de extensões de personalização.

Assembléias

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

Eventos

Novas Propriedades na classe Context

A classe Microsoft.AnalysisServices.AdomdServer.Context tem duas novas propriedades:

Classe New Server

A classe Microsoft.AnalysisServices.AdomdServer.Server é nova e expõe várias extensões de personalização por meio de propriedades de classe e eventos.

Propriedades

Eventos

Classe AdomdCommand

A classe Microsoft.AnalysisServices.AdomdServer.AdomdCommand agora dá suporte aos seguintes comandos MDX:

Extensões e aprimoramentos do MDX

O comando CREATE MEMBER é aprimorado com a caption propriedade, a display_folder propriedade e a associated_measure_group propriedade.

O comando UPDATE MEMBER é adicionado para evitar a recriação do membro quando uma atualização é necessária com a consequente perda de precedência na resoluçã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 diferente solveorder.

O comando CREATE SET é aprimorado com a caption propriedade, a display_folder propriedade e a nova STATIC | DYNAMIC palavra-chave. Estático significa que esse conjunto é avaliado apenas 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 são 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 os seguintes: MDMEMBER_SCOPE_GLOBAL=1, MDMEMBER_SCOPE_SESSION=2.

Na coluna MDSCHEMA_SETS set_evaluation_context é adicionada. Definir valores de contexto de avaliação são os seguintes: MDSET_RESOLUTION_STATIC = 1, MDSET_RESOLUTION_DYNAMIC = 2.

Em MDSCHEMA_KPIS coluna de escopo é adicionada. Os valores de escopo são os seguintes: MDKPI_SCOPE_GLOBAL=1, MDKPI_SCOPE_SESSION=2.