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?
GRANTpara conceder permissões, DENYnegar permissões e REVOKEremover um GRANTou DENY. Sem um GRANTou DENYo usuário pode herdar permissões, digamos, obtendo acesso a um procedimento armazenado.
DENY DELETE, INSERT, UPDATEem um banco de dados ou esquema, acredito que isso afetará apenas tabelas e visualizações.