Leiame_Exemplo de extensões de personalização do Analysis Services

Este exemplo funciona somente no SQL Server 2008. Não funciona em nenhuma versão do SQL Server anterior a SQL Server 2008.

O exemplo do Analysis Services Personalization Extensions é um programa C# que ensina a criar personalizações com base nos usuários. Essas personalizações não são objetos permanentes no cubo, mas sim objetos que o aplicativo do cliente aplica dinamicamente durante a sessão do usuário.

O exemplo do Analysis Services Personalization Extensions cria dinamicamente um objeto diferente para três usuários diferentes. Para cada conexão de usuário, o exemplo habilita apenas o objeto associado ao usuário em questão. Cada um desses objetos de personalização só fica visível durante a sessão do usuário.

Cenário

Um ISV (fornecedor de software independente) cria uma interface que permite a um usuário criar uma métrica de negócio para sua empresa e, depois, compartilhá-la com seus colegas de trabalho. As métricas são dinâmicas e adaptáveis a quem as usa. Por exemplo, o ISV projeta uma interface de cliente que permite ao analista de negócio de uma empresa projetar um indicador de Controle de meta mensal de vendas. Este indicador calcula e controla a meta mensal de vendas para cada vendedor. O analista de negócios pode, então, compartilhar esse indicador com a equipe de vendas da empresa. Agora, qualquer membro da equipe pode facilmente saber como está indo em relação aos objetivos mensais, já que o indicador é personalizado automaticamente de acordo com os objetivos de cada vendedor.

Sem as extensões de personalizações, o indicador teria de ser passado à equipe de Analysis Services da empresa. Essa equipe do Analysis Services teria que incorporar o indicador diretamente no projeto do cubo e re-implantar o cubo para os usuários finais. Como o indicador seria um objeto no cubo, ele não seria personalizado para cada usuário.

Linguagens

C#

Recursos

O exemplo de Extensões de Personalização do Analysis Services usa os seguintes recursos do SQL Server 2008 Analysis Services (SSAS).

Área do aplicativo Recursos

AdventureWorks

ADOMD.NET Server, MDX

Pré-requisitos

Para executar esse exemplo, é preciso ter o SQL Server e os seguintes componentes do SQL Server instalados:

  • Mecanismo de Banco de Dados do SQL Server

  • Analysis Services

  • SQL Server Management Studio

  • Business Intelligence Development Studio

    Dica

    Não há suporte para o Business Intelligence Development Studio nos computadores baseados em Itanium. Há suporte para o ambiente de desenvolvimento de 64 bits nos sistemas operacionais baseados em x64. Os exemplos do SQL Server 2005 podem ser modificados e executados em computadores que executam sistemas operacionais baseados em x86 ou em x64, quando os bancos de dados utilizados pelos exemplos são implantados em um computador baseado em Itanium.

  • Versões atualizadas dos seguintes bancos de dados de exemplo do SQL Server: o data warehouse do AdventureWorks e o banco de dados do AdventureWorks.
    Você pode baixar estes bancos de dados de exemplo no site de Exemplos de Servidor e Projetos Comunitários do Microsoft SQL Server. Para obter mais informações sobre como baixar e instalar bancos de dados de exemplos, consulte Instalando exemplos e bancos de dados de exemplo do SQL Server.

  • Versões atualizadas dos seguintes exemplos do SQL Server: exemplos do Analysis Services e exemplos do Mecanismo de Banco de Dados do SQL Server.
    Você pode baixar estes exemplos no site de Exemplos e Projetos Comunitários do Microsoft SQL Server. Para obter mais informações sobre como baixar e instalar exemplos, consulte Instalando exemplos e bancos de dados de exemplo do SQL Server.

Você também precisa ter instalado o .NET Framework SDK 2.0 ou o Microsoft Visual Studio 2005. O .NET Framework SDK está disponível gratuitamente. Para obter mais informações, consulte Installing the .NET Framework SDK

Criando o exemplo

O exemplo Analysis Services Personalization Extensions é composto de um arquivo binário, ASPE.dll.

Se você ainda não criou um arquivo de chave de nome forte, gere o arquivo de chave usando as instruções a seguir.

Para gerar um arquivo de chave de nome forte

  1. Abra um prompt de comando do Microsoft Visual Studio 2005. Clique em Iniciar, aponte para Todos os Programas, aponte para Microsoft .NET Framework SDK 2.0 e clique em Prompt de Comando do SDK.

    – ou –

    Abra um prompt de comando do Microsoft .NET Framework. Clique em Iniciar, aponte para Todos os Programas, Microsoft .NET Framework SDK 2.0 e clique em Prompt de Comando do SDK.

  2. Use o comando CD (alterar diretório) para alterar o diretório atual da janela do prompt de comando para a pasta em que os exemplos estão instalados.

    Dica

    Para determinar a pasta onde se encontram os exemplos, clique no botão Iniciar, aponte para Todos os Programas, aponte para Microsoft SQL Server, aponte para Documentação e Tutoriais e clique em Diretório de Exemplos. Se o local de instalação padrão tiver sido usado, os exemplos estarão em <unidade_do_sistema>:\Arquivos de Programas\Microsoft SQL Server\100\Samples.

  3. No prompt de comando, execute o seguinte comando para gerar o arquivo de chave:

    sn -k SampleKey.snk

    Importante

    Para obter mais informações sobre um par de chaves de nome forte, consulte "Resumos de segurança: nomes fortes e segurança no .NET Framework" no .NET Development Center do MSDN.

Para criar o exemplo do Analysis Services Personalization Extensions

  1. Renomeie SampleKey.snk como ASPE.snk e mova o arquivo para o mesmo local onde ASPE.sln está.

  2. Compile ASPE.dll usando:

    • Visual Studio 2005 e o arquivo ASPE.sln.

    – ou –

    • O Microsoft MSBuild, incluído no .NET Framework SDK 2.0. Altere o diretório para o local onde o arquivo ASPE.sln da solução está localizado. Execute um comando semelhante ao seguinte em um prompt de comando:

    msbuild /nologo /verbosity:quiet /property:Configuration=Debug ASPE.sln

Você pode usar outras opções de compilação do MSBuild segundo suas necessidades.

Implantando o exemplo

Para implantar o exemplo do Analysis Services Personalization Extensions, você deve adicionar o assembly criado no procedimento anterior para executar uma instância do Analysis Services.

Para adicionar um assembly do ASPE.dll a uma instância em execução do Analysis Services

  1. No SQL Server Management Studio, conecte-se à instância do Analysis Services.

    Localhost é assumida como a instância padrão para este exemplo. Substitua localhost pelo nome da instância que você selecionou.

  2. No nível de servidor, abra a pasta Assemblies e verifique se o assembly ASPE não está listado.

    Se o assembly ASPE estiver listado, remova-o clicando com o botão direito do mouse sobre ele e selecionando Excluir. Continue seguindo as etapas na tela.

  3. Clique com o botão direito do mouse em Assemblies e selecione Novo Assembly.

  4. Na caixa de diálogo Registrar Assembly de Servidor, selecione as seguintes opções:

    1. Em Tipo, selecione Assembly .NET.
    2. Em Nome do Arquivo, clique no botão procurar [...] e localize o arquivo ASPE.dll em sua pasta de projeto nas pastas bin/debug.
    3. Em Permissões, selecione Irrestrito.
    4. Em Representação, selecione Usar a conta de serviço.
    5. Clique em OK.
  5. No nível de servidor, abra a pasta Assemblies e verifique se o assembly ASPE está listado.

  6. Para habilitar o gerenciamento correto de todos os eventos, abra o SQL Server Configuration Manager, selecione Serviços do SQL Server e depois a linha SQL Server Analysis Services. Clique no botão reiniciar para reiniciar o serviço.

Preparando o ambiente para testar o exemplo

No mesmo servidor em que você está executando o Analysis Services e implantou o ASPE.dll, realize os procedimentos a seguir para instalar o ambiente para testar o exemplo.

Para adicionar três usuários a seu sistema atual

  1. Clique em Iniciar, clique com o botão direito do mouse em Meu Computador e selecione Gerenciar.

  2. Expanda Usuários e Grupos Locais para examinar as pastas Usuários e Grupos.

  3. Clique com o botão direito do mouse na pasta Usuários e selecione Novo Usuário.

  4. Na caixa de diálogo Novo Usuário, selecione as seguintes opções:

    1. Em Nome de Usuário, digite usuário1.
    2. Em Senha, digite uma senha forte que atenda aos padrões da sua empresa.
    3. Em Confirmar senha, redigite a senha escolhida.
    4. Desmarque a caixa de seleção Usuário deve alterar senha no próximo logon.
    5. Marque a caixa de seleção Senha nunca expira.
  5. Repita a etapa 4 usando usuário2 e usuário3.

Para verificar se o banco de dados Adventure Works DW esteja implantado e contenha o cubo Adventure Works

  1. Em uma instância do Analysis Services, abra o SQL Server Management Studio e conecte-se ao Nome do servidor, localhost.

  2. Expanda o nó Banco de Dados e verifique se o banco de dados Adventure Works DW existe.

  3. Expanda o nó Adventure Works DW, expanda o nó Cubos e verifique se o cubo Adventure Works existe.

  4. Clique com o botão direito do mouse no cubo Adventure Works e selecione Propriedades. Verifique se o Estado do cubo é Processado.

  5. Se qualquer uma das etapas anteriores não puder ser concluída, consulte o tópico Executando o programa de instalação para instalar os exemplos e os bancos de dados de exemplo da AdventureWorks, dos Manuais Online, na Biblioteca do MSDN.

Para adicionar uma função para os novos usuários e conceder a eles acesso ao cubo e às dimensões

  1. Em uma instância do Analysis Services, abra o SQL Server Management Studio e conecte-se ao Nome do Servidor, localhost.

  2. Expanda o nó Banco de Dados e expanda o banco de dados Adventure Works DW.

  3. Clique com o botão direito do mouse em Funções e selecione Nova Função.

  4. Na caixa de diálogo Criar Função, clique na página Geral e selecione as seguintes opções:

    1. Em Nome da função, digite Usuários de Teste do ASPE.
    2. Marque a caixa de seleção Ler definição.
    3. Limpe as caixas de seleção Controle total (Administrador) e Processar banco de dados.
  5. Clique na página Associação e selecione as seguintes opções:

    1. Clique em Adicionar.
    2. Na janela Selecionar Usuários ou Grupos, em Digite os nomes de objetos a serem selecionados, digite usuário1; usuário2; usuário3.
    3. Clique em Verificar Nomes.
      Os valores agora devem aparecer sublinhados, com o nome do servidor ou do domínio em frente de cada nome.
    4. Clique em OK.
  6. Clique na página Fontes de Dados. Na coluna Acesso para a linha do Adventure Works DW, selecione Leitura.

  7. Clique na página Cubos e selecione as seguintes opções para a linha do Adventure Works:

    1. Na coluna Acesso, selecione Leitura.
    2. Na coluna Acesso a Detalhamento/Cubo Local, selecione Cubo Local e de Detalhamento. Clique em OK para aceitar a mensagem.
    3. Na coluna Processo, marque a caixa de seleção.
  8. Clique na página Dimensões. Para cada uma das linhas em Dimensões, marque a caixa de seleção da coluna Processo.

  9. Clique em OK e espere até que o comando seja processado e a nova função seja criada.

Testando o exemplo

O teste do exemplo demonstra que os objetos de personalização novos são criados em contextos de usuário diferentes, e que esses objetos estão associados ao perfil do usuário.

Para verificar seu contexto

  1. No SQL Server Management Studio, conecte-se ao Nome do Servidor, localhost.

  2. Na barra de ferramentas Padrão, clique em Consulta MDX do Analysis Services.

  3. Conecte-se ao Nome do Servidor, localhost.

  4. Na barra de ferramentas do SQL Server Analysis Services, selecione o banco de dados Adventure Works DW, caso ainda não esteja selecionado.

  5. No painel esquerdo da guia MDX, na lista Cubo, selecione o cubo Adventure Works, caso ainda não esteja selecionado.

  6. Selecione a guia Metadados se ela ainda não estiver selecionada.

  7. Expanda o nó Medidas.

  8. Expanda o nó Vendas pela Internet e verifique se não há nenhuma pasta ISV_1 nesse nó.

  9. Expanda a dimensão Geografia e verifique se não há nenhuma pasta ISV_1 nessa dimensão.

  10. Expanda a dimensão Produto e verifique se não há nenhuma pasta ISV_1 nessa dimensão.

Para verificar o contexto para o usuário1

  1. Usuários que executam o Windows XP ou o Windows Server 2003. Clique com o botão direito do mouse no ícone do SQL Server Management Studio, selecione Executar como e selecione as seguintes opções:

    1. Selecione Usuário seguinte.
    2. Substitua por usuário1. Verifique se o nome do domínio ou servidor está correto.
    3. Passe para a etapa 3.
  2. Usuários que executam o Windows Vista ou o Windows Server 2008. Abra uma janela do comando e execute o seguinte comando:runas.exe /profile /user:<Domain>\user1 "<Path-to-ssms>\Ssms.exe"

    1. Substitua <Domain> pelo domínio ou nome de servidor correto.

    2. Substitua <Path-to-ssms> pelo caminho completo para ssms.exe, o arquivo executável para o SQL Server Management Studio.

      Dica

      O Windows Vista e o Windows Server 2008 já não possuem a opção Executar como quando se clica com o botão direito em um aplicativo.

  3. Assegure-se que o Tipo de servidor é definido como Analysis Services e depois conecte ao Nome do servidor, localhost.

  4. Na barra de ferramentas Padrão, clique em Consulta MDX do Analysis Services.

  5. Conecte-se ao Nome do servidor, localhost.

  6. Na barra de ferramentas do SQL Server Analysis Services, selecione o banco de dados Adventure Works DW, caso ele ainda não esteja selecionado.

  7. No painel esquerdo da guia MDX, na lista Cubo, selecione o cubo Adventure Works, caso ainda não esteja selecionado.

  8. Selecione a guia Metadados, se ela ainda não estiver selecionada.

  9. Expanda o nó Medidas e expanda o nó Vendas pela Internet para visualizar a pasta ISV_1.

    Diferente de seu contexto de usuário, o usuário1 tem uma pasta ISV_1 no nó Vendas pela Internet.

  10. Expanda a pasta ISV_1 e a pasta Common. Observe que o membro Lucro Bruto da Internet é visível para este usuário.

  11. Retorne ao nó Medidas e expanda o grupo de medidas Vendas do Revendedor, expanda a pasta ISV_1 e depois expanda a pasta Operações.

    Observe que a pasta Operações contém o membro Custo Médio do Frete do Item.

  12. Expanda a dimensão Geografia, expanda a pasta ISV_1 e expanda a pasta Comum para ver o conjunto ISV_1 - Costa Oeste.

    Diferentemente de seu contexto de usuário, o usuário1 tem acesso ao conjunto ISV_1 - Costa Oeste.

  13. Expanda a dimensão Produto, expanda a pasta ISV_1 e expanda a pasta Operações para ver o conjunto Touring Bikes.

    Diferente de seu contexto de usuário, o usuário1 tem acesso ao conjunto Touring Bikes.

Para verificar o contexto para o usuário2

  1. Usuários que executam o Windows XP ou o Windows Server 2003. Clique com o botão direito do mouse no ícone do SQL Server Management Studio, selecione Executar como e selecione as seguintes opções:

    1. Selecione O usuário seguinte .
    2. Substitua por usuário2. Verifique se o nome do domínio ou servidor está correto.
    3. Passe para a etapa 3.
  2. Usuários que executam o Windows Vista ou o Windows Server 2008. Abra uma janela do comando e execute o seguinte comando:runas.exe /profile /user:<Domain>\user2 "<Path-to-ssms>\Ssms.exe"

    1. Substitua <Domain> pelo domínio ou nome de servidor correto.

    2. Substitua <Path-to-ssms> pelo caminho completo para ssms.exe, o arquivo executável para o SQL Server Management Studio.

      Dica

      O Windows Vista e o Windows Server 2008 já não possuem a opção Executar como quando se clica com o botão direito em um aplicativo.

  3. Assegure-se que o Tipo de servidor é definido como Analysis Services e depois conecte ao Nome do servidor, localhost.

  4. Na barra de ferramentas Padrão, clique em Consulta MDX do Analysis Services.

  5. Conecte-se ao Nome do servidor, localhost.

  6. Na barra de ferramentas do Analysis Services, selecione o banco de dados Adventure Works DW, caso ainda não esteja selecionado.

  7. No painel esquerdo da guia MDX, na lista Cubo, selecione o cubo Adventure Works, caso ainda não esteja selecionado.

  8. Selecione a guia Metadados se ainda não estiver selecionada.

  9. Expanda o nó Medidas, expanda o nó Vendas pela Internet, expanda a pasta ISV_1 e a pasta Common. Observe que o membro Lucro Bruto da Internet também é visível para este usuário.

  10. Retorne ao nó Medidas, expanda o grupo de medidas Vendas do Revendedor e verifique que não há uma pasta ISV_1 neste grupo.

    Somente o usuário1 tem uma pasta ISV_1 no grupo de medidas Vendas dos Revendedores.

  11. Retorne ao nó Medidas e expanda o grupo de medidas Taxas de Câmbio, expanda a pasta ISV_1 e a pasta Financiar para visualizar o membro Diferença de Taxa.

    Observe que, somente para o usuário2, o grupo de medidas Taxas de Câmbio contém a pasta ISV_1.

  12. Expanda a dimensão Geografia, expanda a pasta ISV_1 e expanda a pasta Comum para ver o conjunto ISV_1 - Costa Oeste.

    Observe que o usuário2, como o usuário1, tem acesso ao conjunto ISV_1 - Costa Oeste.

  13. Expanda a dimensão Produto, expanda a pasta ISV_1 e expanda a pasta Financiar para ver o conjunto Mountain Bikes.

    Embora o usuário2 tenha acesso ao conjunto Mountain Bikes, ele não tem acesso ao conjunto Touring Bikes da pasta Operações. Só o usuário1 tem acesso ao conjunto Touring Bikes .

Para verificar o contexto para o usuário3

  1. Usuários que executam o Windows XP ou o Windows Server 2003. Clique com o botão direito do mouse no ícone do SQL Server Management Studio, selecione Executar como e selecione as seguintes opções:

    1. Selecione O usuário seguinte.
    2. Substitua por usuário3. Verifique se o nome do domínio ou servidor está correto.
    3. Passe para a etapa 3.
  2. Usuários que executam o Windows Vista ou o Windows Server 2008. Abra uma janela do comando e execute o seguinte comando:runas.exe /profile /user:<Domain>\user3 "<Path-to-ssms>\Ssms.exe"

    1. Substitua <Domain> pelo domínio ou nome de servidor correto.

    2. Substitua <Path-to-ssms> pelo caminho completo para ssms.exe, o arquivo executável para o SQL Server Management Studio.

      Dica

      O Windows Vista e o Windows Server 2008 já não possuem a opção Executar como quando se clica com o botão direito em um aplicativo.

  3. Assegure-se que o Tipo de servidor é definido como Analysis Services e depois conecte ao Nome do servidor, localhost.

  4. Na barra de ferramentas Padrão, clique em Consulta MDX do Analysis Services.

  5. Conecte-se ao Nome do servidor, localhost.

  6. Na barra de ferramentas do Analysis Services, selecione o banco de dados Adventure Works DW, caso ainda não esteja selecionado.

  7. No painel esquerdo da guia MDX, na lista Cubo, selecione o cubo do Adventure Works, caso ainda não esteja selecionado.

  8. Selecione a guia Metadados, se ainda não estiver selecionada.

  9. Expanda o nó Medidas, expanda o nó Vendas pela Internet, expanda a pasta ISV_1 e a pasta Common. Observe que o membro Lucro Bruto da Internet é visível para este usuário.

  10. Retorne ao nó Medidas, expanda o grupo de medidas Vendas do Revendedor e observe que não há uma pasta ISV_1 neste grupo.

    Somente o usuário1 tem uma pasta ISV_1 no grupo de medidas Vendas do Revendedor.

  11. Retorne ao nó Medidas, expanda o grupo de medidas Taxas de Câmbio e observe que não há uma pasta ISV_1 neste grupo.

    Somente o usuário2 tem uma pasta ISV_1 no grupo de medidas Taxas de Câmbio.

  12. Retorne ao nó Medidas e expanda o grupo de medidas Pedidos dos Revendedores, expanda a pasta ISV_1 e expanda a pasta Marketing para visualizar o membro Desconto do Revendedor por Pedido.

    Observe que, somente para o usuário3, o grupo de medidas Pedidos dos Revendedores contém a pasta ISV_1.

  13. Expanda a dimensão Geografia, expanda a pasta ISV_1 e expanda a pasta Comum para ver o conjunto ISV_1 - Costa Oeste.

    O usuário3, tal qual os usuário1 e usuário2, tem acesso ao conjunto ISV_1 - Costa Oeste.

  14. Expanda a dimensão Produto, expanda a pasta ISV_1 e expanda a pasta Marketing para visualizar o conjunto Bicicletas para todos os tipos de terrenos.

    Embora o usuário3 tenha acesso ao conjunto Bicicletas para todos os tipos de terreno, ele não tem acesso ao conjunto Touring Bikes da pasta Operações. Somente o usuário1 tem acesso ao conjunto Touring Bikes. User3 também tem acesso ao conjunto Mountain Bikes da pasta Finanças. O usuário2 é que não tem nenhum acesso ao conjunto Bicicletas para todos os tipos de terrenos.

Solucionando problemas do exemplo

Use o seguinte conjunto de procedimentos para solucionar problemas do exemplo do Analysis Services Personalization Extensions.

Para definir pontos de interrupção de depuração no código

  1. No Visual Studio 2005, abra ASPE.sln.

  2. Abra o código-fonte para o arquivo de origem ASClientExtensions.cs e defina um ponto de interrupção na chave de abertura do construtor do ASClientExtensions.

  3. Abra o código-fonte para o arquivo de origem SessionMgr.cs e defina os seguintes pontos de interrupção:

    1. Defina um ponto de interrupção na chave de abertura do construtor do SessionMgr.
    2. Defina um ponto de interrupção na chave de abertura do método CubeOpened.
  4. Abra o código-fonte para o arquivo de origem AuthoringAndManagement.cs e defina os seguintes pontos de interrupção.

    1. Defina um ponto de interrupção na chave de abertura do construtor AuthoringAndManagement.
    2. Defina um ponto de interrupção na chave de abertura do método DefineMembers.
    3. Defina um ponto de interrupção na chave de abertura do método DefineSets.
    4. Defina um ponto de interrupção na chave de abertura do método DefineKPIs.

Para anexar a instância em execução do Analysis Services

  1. Na barra de menu, selecione Depurar e selecione Anexar ao processo.

  2. No painel Processos Disponíveis, localize e selecione msmdsrv.exe.

  3. Clique em Anexar e espere até que o depurador anexe ao processo corrente.

Para executar com os pontos de interrupção

  1. Repita todas as etapas do procedimento, Para verificar o contexto para o usuário1.

    Observe que o SQL Server Management Studio não aparece de imediato. Em vez disso, o Visual Studio se abre.

  2. Para ver a seqüência de eventos, pressione F11 repetidamente.

    Se não houver mais nenhum evento, marque SQL Server Management Studio para continuar com as etapas do procedimento, Para verificar o contexto para o usuário1.

Removendo o exemplo

Use o seguinte procedimento para remover o exemplo do Analysis Services Personalization Extensions.

Para remover as funções e o assembly da instância atual do Analysis Services

  1. Abra o SQL Server Management Studio.

  2. Conecte-se ao Nome do Servidor, localhost.

  3. Expanda o nó Banco de Dados e expanda o banco de dados Adventure Works DW.

  4. Expanda Funções, clique com o botão direito do mouse em Usuários de teste do ASPE , selecione Excluir e clique em OK.

  5. No nível do servidor, expanda Assemblies, clique com o botão direito do mouse em ASPE, selecione Excluir e clique em OK.

  6. Feche o SQL Server Management Studio.

  7. Reinicie o serviço.

Para remover o usuário criado para esse exemplo

  1. Clique em Iniciar, clique com o botão direito do mouse em Meu Computador e selecione Gerenciar.

  2. Expanda Usuários e Grupos Locais para examinar as pastas Usuários e Grupos.

  3. Expanda a pasta Usuários.

  4. Remova o usuário1, usuário2 e usuário3 clicando com o botão direito do mouse em cada um deles, selecionando Excluir e clicando em OK.

Para remover o exemplo do ASPE

  • Da sua pasta de solução, na pasta de ASPE, remova as pastas bin e obj.