Gostaria de configurar um usuário de "leitura" na minha instância do SQL Server 2012. Eu gostaria de permitir a ele o direito de executar qualquer procedimento armazenado, função ou instrução SQL direta, que recupera dados de todas as tabelas e visualizações, mas não para atualizar ou inserir (ou seja, ler qualquer coisa e escrever nada).
Posso configurar isso sem conceder direitos especificamente a cada função ou procedimento armazenado pelo nome, mas conceder a ele a execução correta em qualquer função ou procedimento armazenado, apenas retirando o direito de modificar tabelas?
Alguma coisa mudará se eu executar o SQL Server 2008?
Esclarecimentos e acréscimos:
- Se um procedimento armazenado alterar os dados, o usuário receberá uma mensagem de erro (negando a modificação ou recusando completamente o acesso ao procedimento armazenado).
- Se uma solução em potencial envolve negar permissões, não posso conceder determinadas permissões em vez de negar?
- Uma negação pode ser aplicada a todas as tabelas, visualizações etc. (existentes agora e no futuro) no banco de dados em uma instrução?
GRANT
para conceder permissões, DENY
negar permissões e REVOKE
remover um GRANT
ou DENY
. Sem um GRANT
ou DENY
o usuário pode herdar permissões, digamos, obtendo acesso a um procedimento armazenado.
DENY DELETE, INSERT, UPDATE
em um banco de dados ou esquema, acredito que isso afetará apenas tabelas e visualizações.