Compartir a través de


Permisos de objeto del sistema DENY (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de datos de Azure SQL de Microsoft Fabric

Deniega permisos en objetos de sistema, como procedimientos almacenados, procedimientos almacenados extendidos, funciones y vistas.

Convenciones de sintaxis de Transact-SQL

Sintaxis

DENY { SELECT | EXECUTE } ON [ sys. ] system_object TO principal

Argumentos

[ sys. ]

El sys calificador solo es necesario cuando se hace referencia a vistas de catálogo y vistas de administración dinámica.

system_object

Especifica el objeto en el que se va a denegar el permiso.

principal

Especifica la entidad de seguridad desde la que se revoca el permiso.

Comentarios

Esta instrucción se puede usar para denegar permisos en determinados procedimientos almacenados, procedimientos almacenados extendidos, funciones con valores de tabla, funciones escalares, vistas, vistas de catálogo, vistas de compatibilidad, INFORMATION_SCHEMA vistas, vistas de administración dinámica y tablas del sistema instaladas por SQL Server. Cada uno de estos objetos del sistema existe como un registro único en la base de datos de recursos (mssqlsystemresource). La base de datos de recursos es de solo lectura. Un vínculo al objeto se expone como un registro en el sys esquema de cada base de datos.

La resolución predeterminada de nombres resuelve los nombres no calificados de procedimiento para la base de datos de recursos. Por lo tanto, el sys calificador solo es necesario cuando se especifican vistas de catálogo y vistas de administración dinámica.

Precaución

Denegar permisos en objetos del sistema hace que las aplicaciones que dependen de ellos produzcan un error. SQL Server Management Studio usa vistas de catálogo y podría no funcionar según lo esperado, si cambia los permisos predeterminados en las vistas de catálogo.

No se admite la denegación de permisos en desencadenadores y en columnas de objetos del sistema.

Los permisos de los objetos del sistema se conservan durante las actualizaciones de SQL Server.

Puede ver los objetos del sistema en la vista de catálogo sys.system_objects . Los permisos de los objetos del sistema están visibles en la vista de catálogo sys.database_permissions de la master base de datos.

La siguiente consulta muestra información acerca de los permisos de objetos del sistema:

SELECT *
FROM master.sys.database_permissions AS dp
     INNER JOIN sys.system_objects AS so
         ON dp.major_id = so.object_id
WHERE dp.class = 1
      AND so.parent_object_id = 0;
GO

Permisos

Requiere el permiso CONTROL SERVER.

Ejemplos

En el ejemplo siguiente se deniega EXECUTE el permiso a xp_cmdshellpúblico.

DENY EXECUTE ON sys.xp_cmdshell TO PUBLIC;
GO