A visibilidade de sys.databases :
If the caller of sys.databases is not the owner of the database and the database is not master or tempdb, the minimum permissions required to see the corresponding row are ALTER ANY DATABASE or VIEW ANY DATABASE server-level permission, or CREATE DATABASE permission in the master database. The database to which the caller is connected can always be viewed in sys.databases.
Portanto, a visibilidade padrão é exatamente o que você está pedindo: cada usuário pode ver o master, tempdb e seu próprio banco de dados. Certifique-se de que user_one seja o proprietário de database_one (não apenas um membro da função db_owner!), Como em:
ALTER AUTHORIZATION ON DATABASE::database_one TO user_one;
Se a configuração estiver correta (user_one é o proprietário de database_one, user_dois é proprietário de database_two) e nenhuma permissão extra é concedida , você deve obter exatamente o que está solicitando. Especificamente, você não deve NEGAR nada, o fato de você ter que NEGAR uma permissão implica algo errado com seu teste (você concedeu permissões desnecessárias aos logins de user_one e user_two).