DENY (Transact-SQL)

Actualizado: 12 de diciembre de 2006

Deniega un permiso a una entidad de seguridad. Evita que la entidad de seguridad herede permisos por su pertenencia a grupos o funciones.

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 asegurable 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 asegurable es una función escalar, "ALL" significa EXECUTE y REFERENCES.
    • Si el elemento asegurable es una función con valores de tabla, "ALL" se refiere a DELETE, INSERT, REFERENCES, SELECT y UPDATE.
    • Si el asegurable es un procedimiento almacenado, "ALL" significa EXECUTE.
    • Si el asegurable es una tabla, "ALL" significa DELETE, INSERT, REFERENCES, SELECT y UPDATE.
    • Si el asegurable es una vista, "ALL" significa DELETE, INSERT, REFERENCES, SELECT y UPDATE.
  • PRIVILEGES
    Incluido por compatibilidad con SQL-92. No cambia el comportamiento de ALL.
  • permission
    Nombre de un permiso. Las asignaciones de permisos válidas a asegurables 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 asegurable para el que se deniega el permiso. Es preciso usar el calificador de ámbito "::".
  • securable
    Especifica el elemento asegurable para el que se deniega el permiso.
  • TO principal
    Nombre de una entidad de seguridad. Las entidades de seguridad para las que se pueden denegar permisos sobre un elemento asegurable varían en función de este asegurable. Vea los temas sobre asegurables 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.

Notas

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 asegurables 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.

Los permisos de nivel de columna tienen prioridad sobre los permisos de objeto. Por ejemplo, si un permiso para denegar se aplica a un objeto base, como pueda ser una tabla y, a continuación, se aplica un permiso para conceder a una de las columnas del objeto base, el receptor del permiso tendrá acceso a la columna a pesar de la denegación en el objeto base. Sin embargo, para asegurarse de que los permisos de nivel de columna están presentes, se deben aplicar después de los permisos en el objeto base.

[!NOTA] En SQL Server 2005, esta incoherencia en la jerarquía de permisos se ha mantenido por motivos de compatibilidad con versiones anteriores. Se eliminará en una versión futura.

El procedimiento almacenado del sistema sp_helprotect informa de los permisos sobre un asegurable en el nivel de base de datos.

ms188338.Caution(es-es,SQL.90).gifAdvertencia:
Si se deniega el permiso CONTROL en una base de datos, se deniega implícitamente el permiso CONNECT. Una entidad de seguridad a la que se deniega el permiso CONTROL en una base de datos no puede conectarse a esa base de datos. Del mismo modo, si se deniega el permiso CONTROL SERVER, se deniega implícitamente el permiso CONNECT SQL en el servidor. Una entidad de seguridad a la que se deniega el permiso CONTROL SERVER en un servidor no puede 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 asegurable o un permiso superior que implique el permiso CONTROL sobre el asegurable. Si utiliza la opción AS, la entidad de seguridad especificada debe poseer el asegurable sobre el que se deniega un permiso.

Los beneficiarios del permiso CONTROL SERVER, por ejemplo, los miembros de la función fija de servidor sysadmin, pueden denegar cualquier permiso sobre cualquier asegurable en el servidor. Los beneficiarios del permiso CONTROL en la base de datos, por ejemplo, los miembros de la función fija de base de datos db_owner, pueden denegar cualquier permiso sobre cualquier asegurable 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 de los permisos que se van a denegar.

Ejemplos

Para conocer la sintaxis específica de los asegurables vea los siguientes temas.

Función 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

DENY (permisos del catálogo de texto 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)

Función

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)

Vea también

Referencia

DENY (Transact-SQL)
REVOKE (Transact-SQL)
sp_addgroup (Transact-SQL)
sp_addlogin (Transact-SQL)
sp_adduser (Transact-SQL)
sp_changegroup (Transact-SQL)
sp_changedbowner (Transact-SQL)
sp_dropgroup (Transact-SQL)
sp_dropuser (Transact-SQL)
sp_helpgroup (Transact-SQL)
sp_helprotect (Transact-SQL)
sp_helpuser (Transact-SQL)

Ayuda e información

Obtener ayuda sobre SQL Server 2005

Historial de cambios

Versión Historial

12 de diciembre de 2006

Contenido nuevo:
  • Se agregó contenido para aclarar la prioridad de los permisos de nivel de columna sobre los permisos de objeto.