Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Ocultar banco de dados SQL do Management Studio


Depois de horas tentando descobrir como criar uma conta de usuário que só tem acesso a 1 DB, e só pode ver esse DB. acho que entendi!!!!

  1. Crie uma conta de usuário ( certifique-se de que não está mapeado para nenhum banco de dados, caso contrário você receberá o erro final Msg 15110, Level 16, State 1 e observe a solução proposta )
    USE [master]
    GO
    CREATE LOGIN [us4] 
        WITH PASSWORD=N'123', 
        DEFAULT_DATABASE=[master], 
        CHECK_EXPIRATION=OFF, 
        CHECK_POLICY=OFF
    

  2. Clique com o botão direito do mouse na seção superior do SQL (SQLSERVER Name)>Properties>Permissions>Clique na user account e selecione Deny para visualizar bancos de dados.
    use [master]
    GO
    DENY VIEW ANY DATABASE TO [us4]
    

  3. Clique com o botão direito do mouse no banco de dados recém-criado, Propriedades, Arquivos e altere o Proprietário para a conta recém-criada.(observação importante :ALTER ROLE [db_owner] ADD MEMBER [us4] não funciona )
    USE [dbname]
    GO
    EXEC dbo.sp_changedbowner @loginame = N'us4', @map = false
    

Neste ponto, uma vez que o usuário faça o login, ele verá o Master,tempdb e também verá o novo banco de dados do qual ele é proprietário do banco de dados..Você pode querer ir para Tools>Option e habilitei a opção de ocultar objetos do sistema para que você não mostre o master,tempdb,etc. Você também pode precisar do SP1 se esta opção não funcionar
Msg 15110, Level 16, State 1, Line 1
The proposed new database owner is already a user or aliased in the database.

solução proposta para Msg 15110: para resolver o erro acima, simplesmente exclua o usuário do nó de segurança do banco de dados e tente novamente

Espero que ajude...

Nikhil