Suppose we don't want to do this across the board, but only do this for a specific login. We can run the below statement instead of DENY VIEW ANY DATABASE TO PUBLIC. After running the below statement, this login won't be able to see databases except for any database that this login is the database owner, but all other logins can see the database as long as you did not also deny view to Public.
GRANT VIEW ANY DATABASE TO PUBLIC; -- turn this back on if it was off
DENY VIEW ANY DATABASE TO USER_A;
Оригинал статьи — https://www.mssqltips.com/sqlservertip/2995/how-to-hide-sql-server-user-databases-in-sql-server-management-studio/