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.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

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.

Nota de advertenciaAdvertencia

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.

Nota de advertenciaAdvertencia

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.

Nota de advertenciaAdvertencia

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

DENY (permisos de ensamblado de Transact-SQL)

Clave asimétrica

DENY permisos de clave asimétrica (Transact-SQL)

Certificado

DENY (permisos de certificado de Transact-SQL)

Contrato

DENY (permisos de Service Broker de Transact-SQL)

Base de datos

DENY (permisos de base de datos de Transact-SQL)

Extremo

DENY (permisos de extremo de Transact-SQL)

Catálogo de texto completo

DENY (permisos de texto completo de Transact-SQL)

Lista de palabras irrelevantes de texto completo

DENY (permisos de texto completo de Transact-SQL)

Función

DENY (permisos de objeto de Transact-SQL)

Inicio de sesión

DENY (permisos de entidad de seguridad de servidor de Transact-SQL)

Tipo de mensaje

DENY (permisos de Service Broker de Transact-SQL)

Objeto

DENY (permisos de objeto de Transact-SQL)

Cola

DENY (permisos de objeto de Transact-SQL)

Enlace de servicio remoto

DENY (permisos de Service Broker de Transact-SQL)

Rol

DENY (permisos de entidad de seguridad de base de datos de Transact-SQL)

Ruta

DENY (permisos de Service Broker de Transact-SQL)

Esquema

DENY (permisos de esquema de Transact-SQL)

Servidor

DENY (permisos de servidor de Transact-SQL)

Servicio

DENY (permisos de Service Broker de Transact-SQL)

Procedimiento almacenado

DENY (permisos de objeto de Transact-SQL)

Clave simétrica

DENY (permisos de clave simétrica de Transact-SQL)

Sinónimo

DENY (permisos de objeto de Transact-SQL)

Objetos de sistema

DENY (permisos de objeto de sistema de Transact-SQL)

Tabla

DENY (permisos de objeto de Transact-SQL)

Tipo

DENY (permisos de tipo de Transact-SQL)

Usuario

DENY (permisos de entidad de seguridad de base de datos de Transact-SQL)

Vista

DENY (permisos de objeto de Transact-SQL)

Colección de esquemas XML

DENY (permisos de colección de esquemas XML de Transact-SQL)