Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Nascondi database SQL da Management Studio

Dopo ore di tentativi per capire come creare un account utente che ha accesso solo a 1 DB e può vedere solo quel DB. Penso di averlo capito!!!!

  1. Crea un account utente ( assicurati che non sia mappato su nessun database, altrimenti riceverai l'errore finale Msg 15110, Livello 16, Stato 1 e annota la soluzione proposta )

    USE [master]
    GO
    CREATE LOGIN [us4] 
        WITH PASSWORD=N'123', 
        DEFAULT_DATABASE=[master], 
        CHECK_EXPIRATION=OFF, 
        CHECK_POLICY=OFF
    
  2. Fare clic con il pulsante destro del mouse sulla sezione superiore dell'SQL (nome SQLSERVER)>Properties>Permissions>Fai clic su user account e seleziona Deny per visualizzare i database.

    use [master]
    GO
    DENY VIEW ANY DATABASE TO [us4]
    
  3. Fare clic con il pulsante destro del mouse sul DB appena creato, Proprietà, File e modificare il proprietario nell'account appena creato.(nota importante :ALTER ROLE [db_owner] ADD MEMBER [us4] non funziona )

    USE [dbname]
    GO
    EXEC dbo.sp_changedbowner @loginame = N'us4', @map = false
    

A questo punto, una volta che l'utente effettua il login vedrà il Master,tempdb e vedrà anche il nuovo DB di cui è un DB Owner.. Potresti voler andare su Tools>Option e abilitato l'opzione per nascondere gli oggetti di sistema in modo da non mostrare master, tempdb, ecc. Potrebbe essere necessario anche SP1 se questa opzione non funziona

Msg 15110, Level 16, State 1, Line 1
The proposed new database owner is already a user or aliased in the database.

soluzione proposta per Msg 15110: per risolvere l'errore di cui sopra, elimina semplicemente l'utente dal nodo di sicurezza del database e riprova

Spero di esserti stato d'aiuto...

Nichil