Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Blenden Sie die SQL-Datenbank vor Management Studio aus

Nach stundenlangem Versuch herauszufinden, wie man ein Benutzerkonto erstellt, das nur Zugriff auf 1 DB hat und nur diese DB sehen kann. Ich glaube, ich habe es herausgefunden!!!

  1. Erstellen Sie ein Benutzerkonto ( stellen Sie sicher, dass es keiner Datenbank zugeordnet ist, andernfalls erhalten Sie die endgültige Fehlermeldung 15110, Ebene 16, Status 1 und beachten Sie die vorgeschlagene Lösung )

    USE [master]
    GO
    CREATE LOGIN [us4] 
        WITH PASSWORD=N'123', 
        DEFAULT_DATABASE=[master], 
        CHECK_EXPIRATION=OFF, 
        CHECK_POLICY=OFF
    
  2. Klicken Sie mit der rechten Maustaste auf den oberen Abschnitt von SQL (SQLSERVER-Name)>Properties>Permissions>Klicken Sie auf das user account , und wählen Sie Deny um Datenbanken anzuzeigen.

    use [master]
    GO
    DENY VIEW ANY DATABASE TO [us4]
    
  3. Klicken Sie mit der rechten Maustaste auf die neu erstellte DB, Eigenschaften, Dateien und ändern Sie den Eigentümer auf das neu erstellte Konto. (Wichtiger Hinweis :ALTER ROLE [db_owner] ADD MEMBER [us4] funktioniert nicht )

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

Sobald sich der Benutzer an diesem Punkt anmeldet, sieht er die Master-, tempdb- und auch die neue DB, deren DB-Besitzer er ist. Vielleicht möchten Sie zu Tools>Option gehen und aktivierte die Option zum Ausblenden von Systemobjekten, sodass Master, Tempdb usw. nicht angezeigt werden. Möglicherweise benötigen Sie auch SP1, wenn diese Option nicht funktioniert

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

Lösungsvorschlag für Msg 15110: Um den obigen Fehler zu beheben, löschen Sie einfach den Benutzer aus dem Datenbanksicherheitsknoten und versuchen Sie es erneut

Hoffe das hilft...

Nikhil