Usuário com melhor resposta
Liberação de consulta em várias tabelas

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!
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- Marcado como Resposta Junior Galvão - MVPMVP, Moderator segunda-feira, 30 de dezembro de 2019 22:27
-
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]- Marcado como Resposta Junior Galvão - MVPMVP, Moderator segunda-feira, 30 de dezembro de 2019 22:27
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- Marcado como Resposta Junior Galvão - MVPMVP, Moderator segunda-feira, 30 de dezembro de 2019 22:27
-
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!
-
-
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]- Marcado como Resposta Junior Galvão - MVPMVP, Moderator segunda-feira, 30 de dezembro de 2019 22:27