Permisos de objeto del sistema GRANT (Transact-SQL)
Se aplica a: SQL Server Azure SQL Managed Instance
Concede permisos para objetos de sistema, como procedimientos almacenados del sistema, procedimientos almacenados extendidos, funciones y vistas.
Convenciones de sintaxis de Transact-SQL
Sintaxis
GRANT { SELECT | EXECUTE } ON [ sys. ] system_object TO principal
[ ; ]
Argumentos
[ sys. ]
El calificador sys 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 conceder el permiso.
principal
Especifica la entidad de seguridad para la que se concede el permiso.
Comentarios
Esta instrucción se puede usar para conceder 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 objeto del sistema existe como registro único en la base de datos de recursos del servidor (mssqlsystemresource). La base de datos de recursos es de solo lectura. Se muestra un vínculo al objeto como registro en el esquema sys de todas las bases de datos. Es posible conceder, denegar y revocar el permiso para ejecutar o seleccionar un objeto del sistema.
Conceder permiso para ejecutar o seleccionar un objeto no transmite necesariamente todos los permisos necesarios para usar el objeto. La mayoría de los objetos realizan operaciones para las que se requieren permisos adicionales. Por ejemplo, un usuario al que se concede EXECUTE
permiso no sp_addlinkedserver
puede crear un servidor vinculado a menos que el usuario también sea miembro del rol fijo de servidor sysadmin .
La resolución predeterminada de nombres resuelve los nombres no calificados de procedimiento para la base de datos de recursos. Por lo tanto, el calificador sys solo es necesario cuando se especifican vistas de catálogo y vistas de administración dinámica.
No se admite la concesió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.
Debe estar en la master
base de datos para conceder permisos y la entidad de seguridad a la que concede los permisos debe ser un usuario de la master
base de datos. Es decir, si son permisos de nivel de servidor, no puede concederlos a entidades de seguridad de servidor, solo entidades de seguridad de base de datos.
Puede ver los objetos del sistema en la vista de catálogo sys.system_objects . Puede ver los permisos de objetos del sistema en la vista de catálogo sys.database_permissions de la base de datos master
.
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
A Concesión del permiso SELECT en una vista
En este ejemplo se concede el permiso Sylvester1
del inicio de sesión de SQL Server para seleccionar una vista que presente todos los inicios de sesión de SQL Server. A continuación, en el ejemplo se concede el permiso adicional necesario para ver los metadatos en los inicios de sesión de SQL Server que el usuario no posee.
USE master;
GO
GRANT SELECT ON sys.sql_logins TO Sylvester1;
GRANT VIEW SERVER STATE to Sylvester1;
GO
B. Concesión del permiso EXECUTE en un procedimiento almacenado extendido
En el siguiente ejemplo se concede el permiso EXECUTE
para xp_readmail
a Sylvester1
.
USE master;
GO
GRANT EXECUTE ON xp_readmail TO Sylvester1;
GO