Concedendo acesso personalizado aos dados da célula

Depois que você conceder uma função de banco de dados nas permissões de leitura/gravação ou de leitura do MicrosoftSQL Server 2005 Analysis Services (SSAS) para um cubo, os membros da função têm acesso para exibir todos os dados da célula. Para limitar acesso a células específicas, você deve restringir especificamente o acesso à célula. Para restringir o acesso a membros específicos da dimensão, consulte Concedendo acesso personalizado aos dados da célula.

Para conceder o acesso de função de banco de dados a células específicas, use a linguagem MDX para definir um intervalo de células com leitura, contingente de leitura ou permissões de leitura/gravação. Para obter mais informações, consulte Usando linguagens MDX para definir permissões de dados de célula.

Diretrizes para definição de permissões

Independentemente de uma função de banco de dados ter permissão de leitura, contingente de leitura ou leitura/gravação a dados da célula, há algumas diretrizes e informações em segundo plano que podem lidar com mais facilidade com essas permissões.

  • Cuidado ao conceder permissões a células derivadas
    Uma célula derivada obtém seus dados de outras células. Se a função de banco de dados tiver permissão para a célula derivada, mas não tiver para as células das quais a célula derivada obtém seus valores, talvez um membro daquela função de banco de dados possa inferir os valores de células para as quais ele ou ela não tem permissão. Por exemplo, uma função de banco de dados com permissão para as células das medidas de Vendas e Lucro (ou seja, essas medidas são visíveis à função de banco de dados), mas a função não tem permissão para as células da medida de Custo. Um membro dessa função de banco de dados pode determinar valores para a medida de Custo subtraindo os valores da medida de Lucro dos valores de Vendas.

  • Permissões de dados da célula não podem ser maiores que as permissões no cubo
    As permissões que são concedidas em células específicas não podem exceder as permissões concedidas a uma função de banco de dados no cubo inteiro. Por exemplo, uma função de banco de dados com permissão de leitura/gravação em uma célula, mas essa mesma função de banco de dados só tem permissão de leitura no cubo. A permissão de dados da célula não será leitura/gravação; será leitura.

  • Acesso aos dados da célula não dá acesso a dados de dimensão
    Embora uma função de banco de dados possa ter acesso a dados da célula, essa função não terá acesso aos dados da dimensão a menos que a função tenha tido permissões de leitura ou de leitura/gravação para os dados da dimensão em separado. Acesso a dados de cubo pode restringir acesso a atributos de dimensão para os quais a função de banco de dados tem acesso, mas não pode estender acesso a atributos de dimensão aos quais a função de banco de dados não tem acesso.

  • Negar acesso a dados da célula não oculta a célula de um usuário
    As permissões de acesso para dados da célula não controlam se uma função de banco de dados é capaz de ver uma célula, mas controlam se a função pode ver o conteúdo da célula. Se uma função de banco de dados não tiver acesso aos dados da célula, a célula ainda será visível nos resultados de uma consulta. Porém, a célula contém o valor de #N/A em vez do valor de célula atual. O valor #N/A aparecerá na célula a menos que o aplicativo cliente converta o valor, ou outro valor seja especificado definindo a propriedade Secured Cell Value na cadeia de caracteres de conexão.

    Para deixar a célula invisível nos resultados, limite os membros visíveis - dimensões, atributos de dimensão e membros do atributo de dimensão. Para obter mais informações, consulte Concedendo acesso à dimensão e Concedendo acesso personalizado a dados da dimensão.

Definindo permissão de leitura para os dados da célula

Células às quais uma função de banco de dados tem permissão de leitura são visíveis por membros da função de banco de dados. Essas células serão visíveis mesmo se elas forem derivadas de células às quais a função de banco de dados não tenha nenhuma permissão de acesso.

Por exemplo, suponha que há uma medida calculada chamada Lucro derivada de células para as medidas Vendas e Custo . Se uma função de banco de dados tiver permissão de leitura para as células de Lucro, essa medida será visível mesmo se a função de banco de dados não tiver permissão para as células das medidas Vendas ou Custo.

ObservaçãoObservação

Se uma permissão de leitura for concedida a uma função de banco de dados em um subconjunto de células de cubo, mas essa função não tiver uma expressão MDX que especifica as células para as quais são concedidas as permissões de leitura, a função de banco de dados não terá permissão de leitura em nenhuma célula do cubo. Isso acontece porque o conjunto padrão permitido é um conjunto vazio quando o Analysis Services soluciona um subconjunto de células de cubo.

Para conceder permissões de acesso a um membro em uma dimensão, um usuário deve ser membro da função de servidor Analysis Services ou um membro de uma função de banco de dados do Analysis Services com permissões de controle total (Administrador).

Para dar acesso de leitura a uma função de banco de dados para dados da célula

  1. No SQL Server Management Studio, conecte-se à instância do Analysis Services, expanda Funções para o banco de dados apropriado no Pesquisador de Objetos e clique em uma função de banco de dados (ou crie uma nova função de banco de dados).

  2. Clique em Dados da Célula do Cubo no painel Selecionar uma Página, selecione o cubo na lista emCubo e marque na caixa de seleção Habilitar Permissões de Leitura.

    Se nenhum membro for inserido na caixa Permitir Leitura do Conteúdo do Cubo, todas as células de cubo serão visíveis.

  3. Para conceder acesso especificamente a certos membros, insira a expressão MDX nessas células de cubo na caixa Permitir Leitura do Conteúdo do Cubo. Nenhuma outra célula de cubo será visível.

    Para ajudar a criar a expressão MDX, próximo a Editar MDX, clique no botão procurar e use a janela Construtor MDX exibida para criar sua expressão MDX.

    Para obter exemplos de expressões MDX usadas para definir permissões de dados da célula, consulte Usando linguagens MDX para definir permissões de dados de célula.

Definindo permissão de contingente de leitura para dados da célula

Células para as quais uma função de banco de dados têm permissão de contingente de leitura só serão visíveis se uma das seguintes condições for verdadeira:

  • As células com permissão de contingente de leitura não são derivadas de outras células.

  • As células com permissão de contingente de leitura são derivadas de outras células, mas a função de banco de dados tem permissão de leitura em todas as células das quais a célula foi derivada.

Por exemplo, uma função de banco de dados tem permissão de contingente de leitura nas células Lucro As células Lucro são derivadas das medidas Vendas e Custo. Nesse caso, as células Lucro serão visíveis somente se a função de banco de dados tiver permissão de leitura para as medidas Vendas e Custo. Se a função de banco de dados tivesse permissão de contingente de leitura para as células Custo e a medida Custo fosse derivada de outras células, as célulasLucro só seriam visíveis se a função de banco de dados tivesse permissão de leitura para as células das quais a medidaCusto fosse derivada. Assim, com a permissão de contingente de leitura, pode haver uma cadeia de contingências quando uma célula é derivada de outras, que por sua vez, é derivada de outras, e assim por diante.

ObservaçãoObservação

Se uma função de banco de dados tiver as permissões de leitura e de contingentes de leitura em uma célula, a função terá permissão de leitura na célula.

ObservaçãoObservação

Se uma permissão de leitura for concedida a uma função de banco de dados em um subconjunto de células de cubo, mas essa função não tiver uma expressão MDX que especifica as células para as quais são concedidas as permissões de leitura, a função de banco de dados não terá permissão de leitura em nenhuma célula do cubo. Isso acontece porque o conjunto padrão permitido é um conjunto vazio quando o Analysis Services soluciona um subconjunto de células de cubo.

Para conceder permissões de acesso a um membro em uma dimensão, um usuário deve ser membro da função de servidor do Analysis Services ou um membro de uma função de banco de dados do Analysis Services com permissões de controle total (Administrador).

Para dar acesso de contingente de leitura a uma função de banco de dados para dados da célula

  1. No SQL Server Management Studio, conecte-se à instância do Analysis Services, expanda Funções para o banco de dados apropriado no Pesquisador de Objetos e clique em uma função de banco de dados (ou crie uma nova função de banco de dados).

  2. Clique em Dados da Célula do Cubo no painel Selecionar uma Página, selecione o cubo na lista Cubo e marque a caixa de seleção Habilitar Permissões de Contingente de Leitura.

  3. Na caixa Permitir leitura do contingente do conteúdo da célula na segurança da célula, insira uma expressão MDX que identifica as células para as quais a função de banco de dados tem permissões de contingente de leitura.

    Para ajudar a criar a expressão MDX, próximo a Editar MDX, clique no botão procurar e use a janela Construtor MDX exibida para criar sua expressão MDX.

    Para obter exemplos de expressões MDX usadas para definir permissões de dados da célula, consulte Usando linguagens MDX para definir permissões de dados de célula.

Definindo permissão de leitura/gravação para dados da célula

Células para as quais uma função de banco de dados tem permissões de leitura/gravação são visíveis e atualizáveis por membros da função de banco de dados, desde que esses membros tenham permissões de leitura/gravação para o cubo. As permissões que são concedidas no nível de célula não podem ser maiores que as permissões que concedidas no nível de cubo.

ObservaçãoObservação

Se uma permissão de leitura for concedida a uma função de banco de dados em um subconjunto de células de cubo, mas essa função não tiver uma expressão MDX que especifica as células para as quais são concedidas as permissões de leitura, a função de banco de dados não terá permissão de leitura em nenhuma célula do cubo. Isso acontece porque o conjunto padrão permitido é um conjunto vazio quando Analysis Services soluciona um subconjunto de células de cubo.

Para conceder ou negar permissões de acesso a células específicas, um usuário tem que ser membro de função de servidor Analysis Services ou membro de uma função de banco de dados Analysis Services com permissões de controle total (Administrador).

Para dar acesso de leitura/gravação a uma função de banco de dados para dados da célula

  1. No SQL Server Management Studio, conecte-se à instância do Analysis Services, expanda Funções para o banco de dados apropriado no Pesquisador de Objetos e clique em uma função de banco de dados (ou crie uma nova função de banco de dados).

  2. Clique em Dados da Célula do Cubo no painel Selecionar uma Página, selecione o cubo na lista Cubo e marque a caixa de seleção Habilitar Permissões de Leitura/Gravação.

  3. Na caixa Permitir leitura e gravação do conteúdo do cubo, insira uma expressão MDX que identifique as células para as quais a função de banco de dados tenha permissões de leitura/gravação.

    Para ajudar a criar a expressão MDX, próximo a Editar MDX, clique no botão e use a janela Construtor MDX exibida para criar sua expressão MDX.

    Para obter exemplos de expressões MDX usadas para definir permissões de dados da célula, consulte Usando linguagens MDX para definir permissões de dados de célula.