Vous pouvez utiliser le REFUSER L'AFFICHAGE DE TOUTE BASE DE DONNÉES commande pour le ou les utilisateurs particuliers. Il s'agit d'une nouvelle fonctionnalité disponible dans SQL Server 2008.
Il empêche l'utilisateur de voir le catalogue système (sys.databases, sys.sysdatabases, etc.) et rend donc la base de données invisible pour lui dans SQL Management Studio (SSMS).
Exécutez cette commande à partir de la base de données principale :
DENY VIEW ANY DATABASE TO 'loginName'
L'utilisateur peut toujours accéder à la base de données via votre application. Cependant, s'ils se connectent via SSMS, votre base de données n'apparaîtra pas dans la liste des bases de données et s'ils ouvrent une fenêtre de requête, votre base de données n'apparaîtra pas dans la liste déroulante.
Cependant, ce n'est pas infaillible. Si l'utilisateur est suffisamment intelligent pour exécuter la commande de requête :
USE <YourDatabaseName>
Ensuite, ils verront la base de données dans l'Analyseur de requêtes.
Étant donné que cette solution vous y emmène à 90 %, je donnerais à la base de données un nom obscur pour ne pas laisser les utilisateurs connaître le nom de la base de données.