DENY (Transact-SQL)
Deniega un permiso a una entidad de seguridad. Evita que la entidad de seguridad herede permisos por su pertenencia a grupos o roles.
Sintaxis
Simplified syntax for DENY
DENY { ALL [ PRIVILEGES ] }
| permission [ ( column [ ,...n ] ) ] [ ,...n ]
[ ON [ class :: ] securable ] TO principal [ ,...n ]
[ CASCADE] [ AS principal ]
Argumentos
ALL
Esta opción no deniega todos los permisos posibles. Al denegar ALL se deniegan los permisos siguientes.Si el elemento protegible es una base de datos, ALL significa BACKUP DATABASE, BACKUP LOG, CREATE DATABASE, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TABLE y CREATE VIEW.
Si el elemento protegible es una función escalar, ALL significa EXECUTE y REFERENCES.
Si el elemento protegible es una función con valores de tabla, ALL significa DELETE, INSERT, REFERENCES, SELECT y UPDATE.
Si el elemento protegible es un procedimiento almacenado, ALL significa EXECUTE.
Si el elemento protegible es una tabla, ALL significa DELETE, INSERT, REFERENCES, SELECT y UPDATE.
Si el elemento protegible es una vista, ALL significa DELETE, INSERT, REFERENCES, SELECT y UPDATE.
Nota
La sintaxis de DENY ALL está desusada. Esta característica se quitará en una versión futura de Microsoft SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan. En su lugar, deniegue permisos concretos.
PRIVILEGES
Incluido por compatibilidad con ISO. No cambia el comportamiento de ALL.permission
Es el nombre de un permiso. Las asignaciones de permisos válidas a elementos protegibles se describen en los subtemas que se muestran a continuación.column
Especifica el nombre de una columna de una tabla para la que se deniegan los permisos. Es preciso utilizar los paréntesis "()".class
Especifica la clase de elemento protegible para el que se deniega el permiso. Se requiere el calificador de ámbito "::".securable
Especifica el elemento protegible para el que se deniega el permiso.TO principal
Es el nombre de una entidad de seguridad. Las entidades de seguridad para las que se pueden denegar permisos sobre un elemento protegible varían en función de este elemento protegible. Vea los temas sobre elementos protegibles enumerados más abajo para obtener combinaciones válidas.CASCADE
Indica que el permiso se deniega para la entidad de seguridad especificada y para el resto de entidades de seguridad a las que ésta concedió el permiso. Es obligatorio cuando la entidad de seguridad tiene el permiso con GRANT OPTION.AS principal
Especifica una entidad de seguridad a partir de la cual la entidad de seguridad que ejecuta esta instrucción obtiene su derecho a denegar el permiso.
Comentarios
La sintaxis completa de la instrucción DENY es compleja. El diagrama anterior se ha simplificado para concentrar la atención en su estructura. La sintaxis completa para denegar permisos sobre elementos protegibles específicos se describe en los temas enumerados más adelante.
DENY producirá un error si CASCADE no se especifica al denegar un permiso a una entidad de seguridad a la que se concedió ese permiso con GRANT OPTION.
El procedimiento almacenado del sistema sp_helprotect informa de los permisos sobre un elemento protegible en el nivel de base de datos.
Advertencia |
---|
Un permiso DENY de nivel de tabla no tiene prioridad sobre uno GRANT de nivel de columna. Esta incoherencia en la jerarquía de permisos se ha mantenido por motivos de compatibilidad con versiones anteriores. Se quitará en una versión futura. |
Advertencia |
---|
Si se deniega el permiso CONTROL para una base de datos, se deniega implícitamente el permiso CONNECT para la misma. Una entidad de seguridad a la que se deniega el permiso CONTROL para una base de datos no podrá conectarse a esa base de datos. |
Advertencia |
---|
Si se deniega el permiso CONTROL SERVER, se deniega implícitamente el permiso CONNECT SQL para el servidor. Una entidad de seguridad a la que se deniega el permiso CONTROL SERVER para un servidor no podrá conectarse a ese servidor. |
Permisos
El autor de la llamada (o la entidad de seguridad especificada en la opción AS) debe tener el permiso CONTROL sobre el elemento protegible o un permiso superior que implique el permiso CONTROL sobre el elemento protegible. Si utiliza la opción AS, la entidad de seguridad especificada debe poseer el elemento protegible sobre el que se deniega un permiso.
Los beneficiarios del permiso CONTROL SERVER, por ejemplo, los miembros del rol fijo de servidor sysadmin, pueden denegar cualquier permiso sobre cualquier elemento protegible en el servidor. Los beneficiarios del permiso CONTROL en la base de datos, por ejemplo, los miembros del rol fijo de base de datos db_owner, pueden denegar cualquier permiso sobre cualquier elemento protegible en la base de datos. Los beneficiarios del permiso CONTROL sobre un esquema pueden denegar cualquier permiso sobre cualquier objeto en el esquema. Si se usa la cláusula AS, la entidad de seguridad especificada debe ser propietaria del elemento protegible cuyos permisos que se van a denegar.
Ejemplos
En la siguiente tabla se enumeran los elementos protegibles y los temas donde se describe la sintaxis específica de los mismos.
Rol de aplicación |
DENY (permisos de entidad de seguridad de base de datos de Transact-SQL) |
Ensamblado |
|
Clave asimétrica |
|
Certificado |
|
Contrato |
|
Base de datos |
|
Extremo |
|
Catálogo de texto completo |
|
Lista de palabras irrelevantes de texto completo |
|
Función |
|
Inicio de sesión |
DENY (permisos de entidad de seguridad de servidor de Transact-SQL) |
Tipo de mensaje |
|
Objeto |
|
Cola |
|
Enlace de servicio remoto |
|
Rol |
DENY (permisos de entidad de seguridad de base de datos de Transact-SQL) |
Ruta |
|
Esquema |
|
Servidor |
|
Servicio |
|
Procedimiento almacenado |
|
Clave simétrica |
|
Sinónimo |
|
Objetos de sistema |
|
Tabla |
|
Tipo |
|
Usuario |
DENY (permisos de entidad de seguridad de base de datos de Transact-SQL) |
Vista |
|
Colección de esquemas XML |
DENY (permisos de colección de esquemas XML de Transact-SQL) |