Estou tentando criar uma conta de usuário de banco de dados que tenha acesso apenas a um banco de dados específico e não possa ler ou alterar outros bancos de dados e não possa alterar credenciais de outras contas.
Removi acidentalmente este usuário da função de servidor "público" ao solucionar um problema de conexão, o que impediu meu acesso ao servidor do Management Studio para a conta
A única maneira de obter acesso é adicionar o usuário à função sysadmin, o que não funcionará porque o usuário agora tem acesso a todos os bancos de dados.
agora, quando tento adicionar o usuário de volta à função de servidor público, recebo um erro dizendo que a associação à função não pode ser alterada.
Curiosamente, quando clico com o botão direito no usuário e visualizo as propriedades, ele afirma que o usuário é membro da função pública e não me permite alterar a associação.
Questões:
- Então, se a associação à função pública não pode ser alterada, como consegui remover o usuário da função?
- Como adiciono o usuário novamente para poder recuperar o acesso ao Management Studio para esse usuário?
Responder1
Para ajudar com detalhes adicionais, veja como tudo deve ficar para que você possa dizer exatamente qual parte não está correta. Você tem um login para o servidor e um usuário para o banco de dados da conta com a qual está tendo problemas. Nos níveis de servidor e banco de dados, você verá uma função pública (função de servidor e função de banco de dados). As propriedades da função de servidor público não mostrarão os usuários, mas as propriedades do login mostrarão a função de banco de dados público para todos os bancos de dados (ela será marcada e você não poderá desmarcá-la). As propriedades da função de banco de dados pública também não mostrarão nenhum membro e as propriedades do usuário do banco de dados também não mostrarão a função pública. Por tudo isso, não acredito que você tenha removido o usuário da função pública.
Se quiser tentar excluir e recriar o usuário, você pode primeiro tentar entrar no banco de dados e apenas excluir o usuário do banco de dados. Isso deixará o login, que você pode acessar nas propriedades e, em Mapeamento de usuários, não deverá haver nenhum banco de dados verificado. Você poderá verificar o banco de dados agora (porque o usuário do banco de dados foi excluído) e escolher as funções necessárias. Se isso não funcionar, você também pode excluir o login junto com o usuário do banco de dados para tentar limpar tudo. Para uma última verificação do usuário, você pode executar este SQL:
use database_name
exec sp_change_users_login 'Report'
Isso mostrará todos os usuários órfãos, o que pode significar que ainda há um problema com seu usuário. Isso geralmente pode ser corrigido com:
use database_name
exec sp_change_users_login 'Auto_Fix', 'username'
Para tentar encerrar isso antes que demore mais, pode haver algo completamente diferente causando o problema de conexão deste usuário. Se nada disso funcionar, você pode postar a mensagem de erro que recebe ao fazer login?