Puoi utilizzare DENY VIEW ANY DATABASE comando per l'utente o gli utenti particolari. Questa è una nuova funzionalità disponibile in SQL Server 2008.
Impedisce all'utente di vedere il catalogo di sistema (sys.databases, sys.sysdatabases, ecc.) e quindi rende il DB invisibile a loro in SQL Management Studio (SSMS).
Esegui questo comando dal database principale:
DENY VIEW ANY DATABASE TO 'loginName'
L'utente è ancora in grado di accedere al database tramite l'applicazione. Tuttavia, se accedono tramite SSMS, il tuo database non verrà visualizzato nell'elenco dei database e se aprono una finestra di query, il tuo database non verrà visualizzato nel menu a discesa.
Tuttavia, questo non è infallibile. Se l'utente è abbastanza intelligente da eseguire il comando Query:
USE <YourDatabaseName>
Quindi vedranno il database nel Query Analyzer.
Dato che questa soluzione ti sta portando lì al 90%, darei al database un nome oscuro per non far conoscere agli utenti il nome del database.