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!!!!
-
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
-
Clique com o botão direito do mouse na seção superior do SQL (SQLSERVER Name)>Properties
>Permissions
>Clique nauser account
e selecioneDeny
para visualizar bancos de dados.
use [master] GO DENY VIEW ANY DATABASE TO [us4]
-
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