¿Cómo se pueden ocultar las bases de datos a las que no tiene derechos de acceso al iniciar sesión en SQL Server 2005/2008? Actualmente, si un usuario se conecta, ellos ven todas las bases de datos en el servidor, lo que significa que tienen que escanear la lista para encontrar su base de datos.Ocultar base de datos SQL de Management Studio
Respuesta
Usted tendría que revocar el permiso 'Ver cualquier base de datos' del papel público (SQL Server 2005 en adelante)
Parece que hay un entorno de servidor en MS SQL 2005 y 2008 para restringir la bases de datos de una el usuario puede ver. Encontré el siguiente texto en sql-server-performance.com
En SQL Server 2005 es posible con una nueva función del lado del servidor que se haya creado. El permiso VER CUALQUIER BASE DE DATOS es un nuevo permiso a nivel de servidor. Un inicio de sesión otorgado con este permiso puede ver metadatos que describen todas las bases de datos, independientemente de si el inicio de sesión posee o puede usar una base de datos en particular. Tenga en cuenta De forma predeterminada, se otorga el permiso VER CUALQUIER BASE DE DATOS a la función pública. Por lo tanto, de forma predeterminada, todos los usuarios que se conectan a una instancia de SQL Server 2005 pueden ver todas las bases de datos en la instancia.
Esto en realidad no funcionará de la manera que tiene sentido o de lo que podría esperar que fuera. REVOCA VER CUALQUIER BASE DE DATOS de la función pública, pero luego el usuario tiene que ser el propietario de la base de datos o no se puede ver, pero aún se puede acceder. El problema es una falla de seguridad del motor de base de datos y no es probable que se solucione en la versión actual o futura de SQL Server. Erland Sommarskog abrió el siguiente ítem de conexión para esto hace un tiempo, y recientemente fue discutido en Twitter y con Microsoft por el MVP de SQL. Voto para el conectar y ayudar a hacerlo más de una prioridad para Microsoft para corregir:
Básicamente los permisos se almacenan en el nivel de base de datos, por lo que sería necesario enumerar cada base de datos para determinar si el usuario tiene conecte derechos para mostrar la base de datos en el explorador de objetos, que es una tarea costosa y la forma en que el EM anterior solía hacer cosas. La solución propuesta es que esta información se mantenga también a nivel del servidor, lo cual es un cambio importante.
Después de horas de intentar descubrir cómo crear una cuenta de usuario que solo tiene acceso a 1 DB, y solo puede ver esa base de datos. ¡Creo que lo descubrí!
Crear una cuenta de usuario (asegurarse de que no es asignada a cualquier base de datos, de lo contrario obtendrá el error final Msg 15110, nivel 16, estado 1 y la nota solución propuesta)
USE [master] GO CREATE LOGIN [us4] WITH PASSWORD=N'123', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
Haga clic con el botón derecho en la sección superior del SQL (SQLSERVER Name)> Propiedades> Permisos> Haga clic en la cuenta de usuario y seleccione Denegar para ver las bases de datos.
uso [maestro] GO DENY VISTA A LA BASE DE DATOS DE CUALQUIER [US4]
Haga clic derecho en la base de datos de nueva creación, Propiedades, archivos, y cambiar el propietario de la cuenta recién creada.(importante nota: ALTER PAPEL [db_owner] Agregar miembro [US4] no funciona)
USE [dbname] GO EXEC dbo.sp_changedbowner @loginame = N'us4', @map = false
En este punto, una vez que el usuario inicia sesión en la que va a ver al Maestro, tempdb y la voluntad también vea el nuevo DB del que es propietario de la base de datos. Puede ir a Herramientas> Opción y habilitar la opción para ocultar los objetos del sistema para que no muestre el maestro, tempdb, etc. También puede ser necesario 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 Msg 15110: para resolver el error anterior simplemente eliminar el usuario desde el nodo de seguridad de base de datos y vuelve a intentarlo
Esperanza que ayuda .. .
Nikhil
Esto es bueno, pero ¿qué pasa si no quiero que ese usuario sea dueño de la base de datos, y aún así poder verlo? en SSMS? – friism
¡He estado buscando esto por mucho tiempo, muchas gracias! –
genial esto funcionó para mí ... friismo - demasiada micro administrando IMO;) no puedes simplemente afinar este concepto negando todo lo que necesites IE - table drops/adds, truncates, etc ... – bbqchickenrobot
USE master; GO
DENY VIEW ANY DATABASE TO [loginname]; GO
USE [your db]; GO
DROP USER [loginname]; GO
USE master; GO
ALTER AUTHORIZATION ON DATABASE::[your db]TO [loginname]; GO
¿Puede explicarme qué es este código? hace y cómo difiere de las otras respuestas – userSteve
- 1. Base de datos SQL Azure usando SQL Server Management Studio
- 2. Posible ocultar columnas en un diagrama de base de datos de SQL Server Management Studio?
- 3. SQL Server Management Studio
- 4. SQL Server Management Studio: significado de icono
- 5. SQL Server Management Studio Vista de esquema
- 6. SQL Server Management Studio Express y MySQL?
- 7. ¿Dónde se guarda el archivo .bak de la base de datos desde SQL Server Management Studio?
- 8. Consultar la base de datos de acceso desde SQL Management Studio sin usar servidores vinculados
- 9. SQL Server Management Studio falta
- 10. Autocompletar en SQL Management Studio?
- 11. No se puede adjuntar la base de datos ASP.NET a SQL Server Management Studio
- 12. Cómo insertar un blob en una base de datos utilizando SQL Server Management Studio
- 13. Visual Studio vs. SQL Server Management Studio: su elección
- 14. ¿Cómo puedo gestionar bases de datos SQL CE en SQL Server Management Studio?
- 15. SQL Server Management Studio 2008 Intellisense
- 16. Complemento de SQL Server Management Studio para diagramas
- 17. Ver todo el texto en la columna ntext Management Studio de SQL Server para la base de datos SQL CE
- 18. Cambiar inicio de sesión predeterminado SQL Server Management Studio (SSMS)
- 19. instrucciones de formato SQL en SQL Server Management Studio 2008
- 20. Pruebas unitarias en SQL Server Management Studio
- 21. SQL Management Studio - Ejecute la línea actual
- 22. Macros en SQL Server Management Studio
- 23. Problema con SQL Server Management Studio IntelliSense
- 24. SQL Server Management Studio: ¿se agrega confusión de clave externa?
- 25. Cómo instalar SQL Server Management Studio 2012 (SSMS) Express?
- 26. ¿Cuál es el progreso equivalente a SQL Management Studio?
- 27. Uso de Soluciones/Proyectos en SQL Server Management Studio
- 28. Alfabeto cirílico con Microsoft SQL Server Management Studio
- 29. ¿Cómo uso BCP o Sql Server Management Studio para obtener datos BLOB de SQL Server?
- 30. ¿Cómo obtener "derechos de administrador" en SQL Server Management Studio?
Nota: esto puede no funcionar para usted si usted no puede hacer este usuario de inicio de sesión de la DBO de la base de datos que quiere que lo administre o si tiene varios inicios de sesión que desea proteger de esta manera, ya que solo un único inicio de sesión puede ser el DBO real de una base de datos. –