sql server - transacciones - El permiso SELECT fue denegado en el objeto ''Usuarios'', base de datos ''XXX'', esquema ''dbo''
historial de cambios en sql server (7)
- Abrir SQL Management Studio
- Expande tu base de datos
- Expandir la carpeta "Seguridad"
- Expandir "Usuarios"
- Haga clic derecho en el usuario (el que está tratando de realizar la consulta)
Asegúrate de desmarcar
db_denydatareader
db_denydatawriter
Esto debería ser evidente, pero solo otorgar los permisos a lo que el usuario necesita. Una solución perezosa fácil es verificar db_owner
como lo he hecho, pero esta no es la mejor práctica de seguridad.
Trasladé una base de datos de SQL Server 2012 a Azure. No quiero usar el master
usuarios, así que creé una test
usuario. Esto es lo que hice para la base de datos XXX en Azure:
create user test from login test with default_schema=[dbo]
exec sp_addrolemember ''db_owner'',''test''
Lo verifiqué, y los objetos de la base de datos que me interesan están todos en el esquema dbo
. La tabla Users
está en el esquema dbo
.
La cadena de conexión en mi proyecto web tiene test
como inicio de sesión. Produce el mensaje de error:
The SELECT permission was denied on the object ''Users'', database ''XXX'', schema ''dbo''
¿Qué significa el mensaje de error y qué puedo hacer para permitir que el usuario haga una test
acceso a la base de datos XXX?
Así fue como pude resolver el problema cuando lo enfrenté
- Inicie SQL Management Studio.
- Expanda el nodo del servidor (en el ''Explorador de objetos'').
- Expanda el Nodo de bases de datos y luego expanda la Base de datos específica a la que intenta acceder utilizando el usuario específico.
- Expanda el nodo Usuarios bajo el nodo Seguridad para la base de datos.
- Haga clic derecho en el usuario específico y haga clic en ''propiedades''. Obtendrá un cuadro de diálogo.
- Asegúrese de que el usuario sea miembro del grupo db_owner (lea los comentarios a continuación antes de usar esta ruta) y otros cambios necesarios usando la vista. (Utilicé esto para 2016. No estoy seguro de cómo se ve el diálogo específico en otra versión y por lo tanto no es específico)
Creo que el problema es que el usuario tiene privilegios de denegación . Este error se produce cuando el usuario que ha creado no tiene los privilegios suficientes para acceder a sus tablas en la base de datos. Otorgue el privilegio al usuario para obtener lo que desea.
GRANT los permisos específicos del usuario tales como SELECCIONAR, INSERTAR, ACTUALIZAR y BORRAR en las tablas en esa base de datos.
La sintaxis para otorgar el permiso de selección es:
USE YourDB;
GRANT SELECT ON dbo.functionName TO UserName;
Resuelvo mi problema haciendo esto. [NOTA IMPORTANTE: permite privilegios escalados (expandidos) para la cuenta en particular, posiblemente más de lo necesario para un escenario individual].
- Vaya a '' Object Explorer '' de SQL Management Studio.
- Expanda Seguridad , luego inicie sesión .
- Seleccione el usuario con el que está trabajando, luego haga clic con el botón derecho y seleccione Propiedades .
- En Seleccione una página , vaya a Funciones de servidor
- Haga clic en sysadmin y guardar.
Se necesitan permisos para ese usuario
Verifique el espacio de su base de datos. Este error se produce cuando aumenta el espacio en comparación con el espacio asignado a la base de datos.