Sou um DBA acidental em uma pequena empresa que não possui um DBA dedicado.
Preciso configurar um login/usuário somente leitura para o banco de dados do SQL Server 2008 usando a autenticação do SQL Server que pode ser usada por usuários avançados para executar algumas consultas/relatórios ad hoc.
Encontrei muitas postagens e artigos descrevendo a configuração de um usuário somente leitura, por exemplo:
Como conceder aos usuários acesso somente leitura a todos os bancos de dados
Tentei seguir esses guias e me certificar de que o login em questão é um membro apenas de db_datareader
funções public
, mas ainda posso fazer alterações nos dados quando estou logado como este usuário "somente leitura".
Por exemplo, posso executar esta consulta no SSMS
UPDATE [dbo].[SoftwareRunLogs]
SET [RunDateTime] = '2010-10-29 13:31:06.133'
WHERE ID = 1
e atualiza a linha em uma tabela:
(1 row(s) affected)
Espero que essa consulta falhe.
Quando tento executar uma CREATE TABLE
instrução, ela falha com a mensagem CREATE TABLE permission denied in database ...
que eu esperava UPDATE
e INSERT
as DELETE
instruções falham de maneira semelhante, mas isso não acontece.
Talvez eu tenha dado permissões de gravação inadvertidamente a esse usuário, mas não sei como verificar e onde procurar. Devo ter perdido algo trivial.
Alguma ideia?
Há um login de servidor chamado ReadOnlyUser
e aqui estão suas propriedades:
No banco de dados existe um usuário chamado ReadOnlyUser
e aqui estão suas propriedades:
Eu estava olhando todos os itens em
Security
nós no SSMS e parece que de alguma forma as propriedades dapublic
função de banco de dados foram alteradas. Eles ficaram assim:Eu realmente não sei como eles deveriam parecer normalmente, mas limpar as caixas de seleção
Delete
,Insert
,Update
parece resolver o problema.O problema imediato está resolvido agora e terei que ler mais sobre a
public
função e quais configurações ela deve ter.