DENY (permisos de objeto de sistema de Transact-SQL)
Deniega permisos en objetos de sistema, como procedimientos almacenados, procedimientos almacenados extendidos, funciones y vistas.
Sintaxis
DENY { SELECT | EXECUTE } ON [ sys.]system_object TO principal
Argumentos
[ sys.]
Sólo se requiere el calificador sys para hacer referencia a vistas de catálogo y vistas de administración dinámica.system_object
Especifica el objeto en el que se va a denegar el permiso.principal
Especifica la entidad de seguridad de la que se va a revocar el permiso.
Comentarios
Puede utilizar esta instrucción para denegar permisos para determinados procedimientos almacenados, procedimientos almacenados extendidos, funciones con valores de tabla, funciones escalares, vistas, vistas de catálogo, vistas de compatibilidad, vistas INFORMATION_SCHEMA, vistas de administración dinámica y tablas del sistema instalados por SQL Server. Cada objeto del sistema existe como registro único en la base de datos de recursos (mssqlsystemresource). La base de datos de recursos es de sólo lectura. Se muestra un vínculo al objeto como registro en el esquema sys de todas las bases de datos.
La resolución predeterminada de nombres resuelve los nombres no calificados de procedimiento para la base de datos de recursos. Por tanto, sólo se requiere el calificador sys para especificar vistas de catálogo y vistas de administración dinámica.
Advertencia |
---|
Si deniega permisos en objetos del sistema se producirán errores en las aplicaciones que dependen de ellos. SQL Server Management Studio utiliza vistas de catálogo y podría no funcionar correctamente si cambia los permisos predeterminados en las vistas de catálogo. |
No se admite la denegación de permisos en desencadenadores y columnas de objetos del sistema.
Los permisos de objetos del sistema se mantendrán durante las actualizaciones de SQL Server.
Puede ver los objetos del sistema en la vista de catálogo sys.system_objects. Puede ver los permisos de objetos del sistema en la vista de catálogo sys.database_permissions en la base de datos maestra.
La siguiente consulta muestra información acerca de los permisos de objetos del sistema:
SELECT * FROM master.sys.database_permissions AS dp
JOIN sys.system_objects AS so
ON dp.major_id = so.object_id
WHERE dp.class = 1 AND so.parent_object_id = 0 ;
GO
Permisos
Requiere el permiso CONTROL SERVER.
Ejemplos
En el siguiente ejemplo se deniega el permiso EXECUTE en xp_cmdshell para public.
DENY EXECUTE ON sys.xp_cmdshell TO public;
GO