Compartilhar via


Extensões de personalização do Analysis Services

Aplica-se a: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

SQL Server SQL Server Analysis Services extensões de personalização são a base da ideia de implementar 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, SQL Server Analysis Services extensões de personalização fornecem a funcionalidade que possibilita obter o seguinte:

  • Design e implantação dinâmicos Imediatamente após projetar e implantar SQL Server Analysis Services extensões de personalização, os usuários terão acesso aos objetos e funcionalidades no início da próxima sessão do usuário.

  • Independência de interface Independentemente da interface que você usa para criar as extensões de personalização SQL Server Analysis Services, os usuários podem usar qualquer interface para acessar os objetos e a funcionalidade.

  • Contexto de sessão SQL Server Analysis Services extensões de personalização 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 SQL Server Analysis Services extensões de personalização com outros desenvolvedores de software sem precisar entrar em especificações detalhadas sobre onde ou como encontrar essa funcionalidade estendida.

SQL Server Analysis Services extensões de personalização 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.

SQL Server Analysis Services extensões de personalização são uma modificação simples e elegante na arquitetura de assembly gerenciado existente e são expostas em toda a SQL Server Analysis Services modelo de objeto Microsoft.AnalysisServices.AdomdServer, sintaxe MDX (Multidimensional Expressions) e conjuntos de linhas de esquema.

Arquitetura lógica

A arquitetura para extensões de personalização SQL Server Analysis Services baseia-se na arquitetura de assembly gerenciado e nos quatro elementos básicos a seguir:

O atributo personalizado [PlugInAttribute]
Ao iniciar o serviço, SQL Server 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 no MSDN.

Para todas as classes com o atributo personalizado Microsoft.AnalysisServices.AdomdServer.PlugInAttribute, SQL Server 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, SQL Server 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, SQL Server Analysis Services remove os objetos criados dinamicamente e fecha o ambiente de execução.

Eventos
A criação de objeto é disparada 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, SQL Server Analysis Services cria uma sessão e dispara o evento Microsoft.AnalysisServices.AdomdServer.Server.SessionOpened. Quando um cliente encerra a sessão no servidor, SQL Server 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

SQL Server Analysis Services extensões de personalização 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 SQL Server Analysis Services classes de extensões de personalização.

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

O Microsoft.AnalysisServices.AdomdServer.Server 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

  • Microsoft.AnalysisServices.AdomdServer.Server.SessionOpened

  • Microsoft.AnalysisServices.AdomdServer.Server.SessionClosing

Classe AdomdCommand

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

Extensões e aprimoramentos MDX

O comando CREATE MEMBER é aprimorado com a propriedade legenda, a propriedade display_folder e a propriedade 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. Atualizações não pode alterar o escopo do membro calculado, mover o membro calculado para um pai diferente ou definir um solveorder diferente.

O comando CREATE SET é aprimorado com a propriedade legenda, a propriedade display_folder e o novo STATIC | PALAVRA-CHAVE DINÂMICO. Estático significa que o 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 um palavra-chave for omitido.

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.