DENY (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punto de conexión de análisis SQL en Microsoft FabricAlmacenamiento en Microsoft Fabric

Deniega un permiso a una entidad de seguridad. Evita que la entidad de seguridad herede permisos por su pertenencia a grupos o roles. DENY tiene prioridad sobre todos los permisos, salvo que DENY no se aplique a los propietarios de objetos o miembros del rol fijo de servidor sysadmin. Nota de seguridad No se pueden denegar permisos a los miembros del rol fijo de servidor sysadmin y a los propietarios de objetos.

Convenciones de sintaxis de Transact-SQL

Sintaxis

-- Syntax for SQL Server and Azure SQL Database  
  
-- Simplified syntax for DENY  
DENY   { ALL [ PRIVILEGES ] } 
     | <permission>  [ ( column [ ,...n ] ) ] [ ,...n ]  
    [ ON [ <class> :: ] securable ] 
    TO principal [ ,...n ]   
    [ CASCADE] [ AS principal ]  
[;]

<permission> ::=  
{ see the tables below }  
  
<class> ::=  
{ see the tables below }  
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse and Microsoft Fabric
  
DENY   
    <permission> [ ,...n ]  
    [ ON [ <class_> :: ] securable ]   
    TO principal [ ,...n ]  
    [ CASCADE ]  
[;]  
  
<permission> ::=  
{ see the tables below }  
  
<class> ::=  
{  
      LOGIN  
    | DATABASE  
    | OBJECT  
    | ROLE  
    | SCHEMA  
    | USER  
}  

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.

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 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. Los paréntesis () son obligatorios.

class
Especifica la clase de elemento protegible para el que se deniega el permiso. El calificador de ámbito :: es obligatorio.

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 la entidad de seguridad de la que la entidad de seguridad que ejecuta esta consulta deriva su derecho de denegar el permiso. Use la cláusula AS de la entidad de seguridad para indicar que la entidad de seguridad registrada como el denegador del permiso debe ser una entidad de seguridad distinta de la persona que ejecuta la instrucción. Por ejemplo, suponga que la usuaria María tiene el principal_id 12 y el usuario Raúl tiene el principal_id 15. Mary ejecuta DENY SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul; Now the sys.database_permissions table will indicate that the grantor_principal_id of the deny statement was 15 (Gonzalez) even while the statement was actually executed by user 13 (Mary).

El uso de AS en esta instrucción no implica la capacidad de suplantar a otro usuario.

Observaciones

La sintaxis completa de la instrucción DENY es compleja. El diagrama de sintaxis 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.

En Microsoft Fabric, actualmente no se puede ejecutar explícitamente CREATE USER. Cuando se ejecuta GRANT o DENY, el usuario se creará automáticamente.

Precaución

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 eliminará en una próxima versión.

Precaución

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.

Precaución

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 esta tabla se enumeran los elementos protegibles y los temas donde se describe la sintaxis específica de los mismos.

Elementos protegibles Sintaxis
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)
Grupo de disponibilidad Disponibilidad de los permisos de grupo DENY (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)
Credencial de ámbito de base de datos DENY (credencial de ámbito de base de datos de Transact-SQL)
Punto de conexión 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)
Object 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)
Role DENY (permisos de entidad de seguridad de base de datos de Transact-SQL)
Enrutar DENY (permisos de Service Broker de Transact-SQL)
Esquema DENY (permisos de esquema de Transact-SQL)
Lista de propiedades de búsqueda Denegar permisos de lista de propiedades de búsqueda (Transact-SQL)
Server 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)
Synonym (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)
Ver DENY (permisos de objeto de Transact-SQL)
Colección de esquemas XML DENY (permisos de colección de esquemas XML de Transact-SQL)

Consulte también

REVOKE (Transact-SQL)
sp_addlogin (Transact-SQL)
sp_adduser (Transact-SQL)
sp_changedbowner (Transact-SQL)
sp_dropuser (Transact-SQL)
sp_helprotect (Transact-SQL)
sp_helpuser (Transact-SQL)