DENY (Transact-SQL)
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Punto de conexión de análisis SQL en Microsoft Fabric Almacenamiento 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
}
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.
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)