sql >> Base de Datos >  >> RDS >> Sqlserver

Ocultar base de datos SQL de Management Studio

Después de horas de tratar de descubrir cómo crear una cuenta de usuario que solo tiene acceso a 1 base de datos y solo puede ver esa base de datos. Creo que lo descubrí!!!!

  1. Cree una cuenta de usuario (asegúrese de que no esté asignada a ninguna base de datos; de lo contrario, recibirá el mensaje de error final 15110, nivel 16, estado 1 y observe la solución propuesta )

    USE [master]
    GO
    CREATE LOGIN [us4] 
        WITH PASSWORD=N'123', 
        DEFAULT_DATABASE=[master], 
        CHECK_EXPIRATION=OFF, 
        CHECK_POLICY=OFF
    
  2. Haga clic con el botón derecho en la sección superior del SQL (Nombre SQLSERVER)>Properties>Permissions>Haga clic en la user account y seleccione Deny para ver las bases de datos.

    use [master]
    GO
    DENY VIEW ANY DATABASE TO [us4]
    
  3. Haga clic con el botón derecho en la base de datos, las propiedades y los archivos recién creados y cambie el propietario a la cuenta recién creada. (nota importante :ALTER ROLE [db_owner] ADD MEMBER [us4] no funciona )

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

En este punto, una vez que el usuario inicie sesión, verá Master, tempdb y también verá la nueva base de datos de la que es propietario de la base de datos. Es posible que desee ir a Tools>Option y habilitó la opción para ocultar objetos del sistema para que no muestre el maestro, tempdb, etc. También puede necesitar SP1 si esta opción no funciona

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

solución propuesta para el mensaje 15110: para resolver el error anterior, simplemente elimine al usuario del nodo de seguridad de la base de datos y vuelva a intentarlo

Espero que ayude...

Nikhil