sql >> Databasteknik >  >> RDS >> Sqlserver

Dölj SQL-databas från Management Studio

Efter timmars försök att ta reda på hur man skapar ett användarkonto som bara har tillgång till 1 DB och bara kan se den DB. Jag tror jag kom på det!!!!

  1. Skapa ett användarkonto (se till att det inte är mappat till någon databas, annars får du det sista felmeddelandet Msg 15110, Level 16, State 1 och notera föreslagen lösning )

    USE [master]
    GO
    CREATE LOGIN [us4] 
        WITH PASSWORD=N'123', 
        DEFAULT_DATABASE=[master], 
        CHECK_EXPIRATION=OFF, 
        CHECK_POLICY=OFF
    
  2. Högerklicka på den övre delen av SQL (SQLSERVER Name)>Properties>Permissions>Klicka på user account och välj Deny för att visa databaser.

    use [master]
    GO
    DENY VIEW ANY DATABASE TO [us4]
    
  3. Högerklicka på den nyskapade databasen, egenskaper, filer och ändra ägaren till det nyskapade kontot.(viktig notering :ALTER ROLE [db_owner] ADD MEMBER [us4] fungerar inte )

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

När användaren väl loggar in kommer han att se Master,tempdb och kommer även att se den nya DB som han är DB-ägare av. Du kanske vill gå till Tools>Option och aktiverade alternativet att dölja systemobjekt så att du inte visar master,tempdb,etc. Du kan också behöva SP1 om det här alternativet inte fungerar

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

föreslagen lösning till Msg 15110: för att lösa ovanstående fel, ta helt enkelt bort användaren från databassäkerhetsnoden och försök igen

Hoppas det hjälper...

Nikhil



  1. UTF-8-kompatibel trunkeringsfunktion

  2. MySQL hämta array lägger till dubbla värden?

  3. Tvinga kod-först att alltid initialisera en obefintlig databas?

  4. Välj data från DB baserat på användarinmatning