Mapeamento do usuário do SQL Server - Limitar a exibição de bancos de dados para um usuário

2

Estou adicionando um novo login com a autenticação do SQL Server. Eu defini sua Função de Servidor como pública e, em seguida, entrei no Mapeamento de Usuários, selecionando o único banco de dados ao qual esse usuário deve ter acesso. Em seguida, altero o esquema padrão para dbo e tornei este usuário o db_owner.

Em seguida, conecto-me à instância usando as credenciais do novo usuário e posso ver não apenas o banco de dados ao qual ele deve ter acesso, mas também todos os outros bancos de dados anexados.

Como posso limitar esse usuário a apenas ver o banco de dados ao qual ele tem acesso?

Obrigado antecipadamente!

    
por Jaime 02.02.2010 / 20:20

3 respostas

1

Para isso, você precisará remover a conta de convidado de todos os outros bancos de dados. Enquanto o usuário pode ver os outros bancos de dados, ele não pode abri-los e fazer nada (a menos que a conta de convidado ou a função pública dentro desses bancos de dados tenha acesso a qualquer coisa).

    
por 02.02.2010 / 20:57
0

Confira a VIEW ANY DATABASE permissão no nível do servidor. A função pública recebe essa permissão por padrão. Você pode revogá-lo de public & Em seguida, conceda-o especificamente aos logins que você deseja permitir. Como alternativa, deixe a concessão padrão em público e negue a permissão para logins que você não deseja ver todos os bancos de dados.

Confira esta resposta para obter a sintaxe.

Usar a negação não é exatamente a alternativa. Fazer isso significará que o login nunca poderá ver nenhum banco de dados listado, mesmo que o login tenha permissão para eles.

    
por 03.02.2010 / 02:48
0

Adendo à resposta de Nick Kavadias: Não tenho certeza se é isso que você precisa, mas isso funciona?

USE AdventureWorks 
GO 
GRANT VIEW MyDatabase TO User1 
    
por 09.04.2010 / 18:23