Вы можете использовать команду DENY VIEW ANY DATABASE для конкретного пользователя (ей). Это новая функция, доступная в SQL Server 2008.
Он не позволяет пользователю просматривать системный каталог (sys.databases, sys.sysdatabases и т. Д.) И, следовательно, делает БД невидимой для него в SQL Management Studio (SSMS).
Запустите эту команду из основной базы данных:
DENY VIEW ANY DATABASE TO 'loginName'
Пользователь все еще может получить доступ к базе данных через ваше приложение. Однако, если они войдут через SSMS, ваша база данных не будет отображаться в списке баз данных, и если они откроют окно запроса, ваша база данных не будет отображаться в раскрывающемся списке.
Тем не менее, это не надежно. Если пользователь достаточно умен, чтобы запустить команду запроса:
USE <YourDatabaseName>
Затем они увидят базу данных в Query Analyzer.
Поскольку это решение занимает у вас 90%, я бы назвал базу данных неясным именем, чтобы пользователи не знали имя базы данных.