none
Liberação de consulta em várias tabelas RRS feed

  • Pergunta

  • Olá pessoal,

    este é meu primeiro post por aqui e preciso muito de uma ajuda.

    Tenho uma base de dados Microsiga no SQL 2008 com mais de 1300 tabelas.

    Preciso criar vários usuários setoriais (MARKETING, COMPRAS, PRODUCAO) para consultas em tabelas específicas.

    Preciso de uma forma de liberar a consulta em várias tabelas e negar o acesso am várias tabelas também, há algum script ou forma de fazer isso sem ser selecionar/digitar, tabela por tabela?

    Desde já agradeço a ajuda.

    Abrs!

     

    quinta-feira, 8 de julho de 2010 19:07

Respostas

  • USE [dbTeste]
    GO
    CREATE ROLE [RL_teste]
    GO
    EXEC sp_addrolemember N'RL_teste', N'usuario'
    GO
    
    -- exibir resultado no modo texto e copiar os valores e executar
    select 'grant select on '+ name + ' to RL_teste' from sys.tables
    
    
    

    Spiritiun

    vc pode criar uma role depois fazer um select na sys.tables montando o comando de grant


    att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba
    quinta-feira, 8 de julho de 2010 20:01
    Moderador
  • Spirtiun,

    Neste caso, você deverá utilizar o comando Deny para negar acesso as tabelas com prefiro S.

    Veja este exemplo:

    select 'deny select on '+ name + ' to RL_teste' from sys.tables where name like 'S.%'


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário]
    sexta-feira, 9 de julho de 2010 18:20
    Moderador

Todas as Respostas

  • USE [dbTeste]
    GO
    CREATE ROLE [RL_teste]
    GO
    EXEC sp_addrolemember N'RL_teste', N'usuario'
    GO
    
    -- exibir resultado no modo texto e copiar os valores e executar
    select 'grant select on '+ name + ' to RL_teste' from sys.tables
    
    
    

    Spiritiun

    vc pode criar uma role depois fazer um select na sys.tables montando o comando de grant


    att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba
    quinta-feira, 8 de julho de 2010 20:01
    Moderador
  • OK, mas desculpe minha noobisse sou totalmente inexperiente em SQL 2008.

    No caso a base de dados é a DADOSADV.

    Tenho o usuário COMEX.

    Ele deverá ter acesso nas tabelas com prefixo A e B.

    Ele não deverá ter acesso nas tabelas de prefixo S.

    Preciso de um script que me permita dar Grant de leitura e Deny total em um lote de tabelas.

    Espero ter explicado melhor e obrigado!

    sexta-feira, 9 de julho de 2010 11:47
  • eu executei o comando

    select 'grant select on '+ name + ' to RL_teste' from sys.tables

    eu precisaria excluir da pesquisa todas as tabelas prefixo S...isso seria possível?

    sexta-feira, 9 de julho de 2010 15:28
  • Spirtiun,

    Neste caso, você deverá utilizar o comando Deny para negar acesso as tabelas com prefiro S.

    Veja este exemplo:

    select 'deny select on '+ name + ' to RL_teste' from sys.tables where name like 'S.%'


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário]
    sexta-feira, 9 de julho de 2010 18:20
    Moderador