GRANT (permisos de servidor de Transact-SQL)

Se aplica a: SQL Server Azure SQL Managed Instance

Concede permisos en un servidor.

Convenciones de sintaxis de Transact-SQL

Sintaxis

  
GRANT permission [ ,...n ]   
    TO <grantee_principal> [ ,...n ] [ WITH GRANT OPTION ]  
    [ AS <grantor_principal> ]  
  
<grantee_principal> ::= SQL_Server_login   
    | SQL_Server_login_mapped_to_Windows_login  
    | SQL_Server_login_mapped_to_Windows_group  
    | SQL_Server_login_mapped_to_certificate  
    | SQL_Server_login_mapped_to_asymmetric_key  
    | server_role  
  
<grantor_principal> ::= SQL_Server_login   
    | SQL_Server_login_mapped_to_Windows_login  
    | SQL_Server_login_mapped_to_Windows_group  
    | SQL_Server_login_mapped_to_certificate  
    | SQL_Server_login_mapped_to_asymmetric_key  
    | server_role  

Argumentos

permission
Especifica un permiso que se puede conceder para un servidor. Para obtener una lista de permisos, vea la sección Comentarios que se muestra posteriormente en este tema.

TO <grantee_principal> Especifica la entidad de seguridad para la que se concede el permiso.

AS <grantor_principal> Especifica la entidad de seguridad de la que la entidad de seguridad que ejecuta esta consulta deriva su derecho de conceder el permiso.

WITH GRANT OPTION
Indica que la entidad de seguridad también podrá conceder el permiso especificado a otras entidades de seguridad.

SQL_Server_login
Especifica un inicio de sesión de SQL Server.

SQL_Server_login_mapped_to_Windows_login
Especifica un inicio de sesión de SQL Server asignado a un inicio de sesión de Windows.

SQL_Server_login_mapped_to_Windows_group
Especifica un inicio de sesión de SQL Server asignado a un grupo de Windows.

SQL_Server_login_mapped_to_certificate
Especifica un inicio de sesión de SQL Server asignado a un certificado.

SQL_Server_login_mapped_to_asymmetric_key
Especifica un inicio de sesión de SQL Server asignado a una clave asimétrica.

server_role
Especifica un rol de servidor definido por el usuario.

Observaciones

Los permisos del ámbito del servidor solamente pueden concederse si la base de datos actual es maestra.

Puede ver información acerca de los permisos del servidor en la vista de catálogo sys.server_permissions, mientras que la información acerca de las entidades de seguridad de servidor puede verse en la vista de catálogo sys.server_principals. Encontrará información sobre la pertenencia de roles de servidor en la vista de catálogo sys.server_role_members.

Un servidor ocupa el nivel más alto en la jerarquía de permisos. En la siguiente tabla se muestran los permisos más específicos y limitados que pueden concederse para un servidor.

Permiso de servidor Implícito en el permiso de servidor
ADMINISTER BULK OPERATIONS CONTROL SERVER
ALTER ANY AVAILABILITY GROUP

Se aplica a: SQL Server (SQL Server 2012 (11.x) a través de la versión actual).
CONTROL SERVER
ALTER ANY CONNECTION CONTROL SERVER
ALTER ANY CREDENTIAL CONTROL SERVER
ALTER ANY DATABASE CONTROL SERVER
ALTER ANY ENDPOINT CONTROL SERVER
ALTER ANY EVENT NOTIFICATION CONTROL SERVER
ALTER ANY EVENT SESSION CONTROL SERVER
ALTER ANY LINKED SERVER CONTROL SERVER
ALTER ANY LOGIN CONTROL SERVER
ALTER ANY SERVER AUDIT CONTROL SERVER
ALTER ANY SERVER ROLE

Se aplica a: SQL Server (SQL Server 2012 (11.x) a través de la versión actual).
CONTROL SERVER
ALTER RESOURCES CONTROL SERVER
ALTER SERVER STATE CONTROL SERVER
ALTER SETTINGS CONTROL SERVER
ALTER TRACE CONTROL SERVER
AUTHENTICATE SERVER CONTROL SERVER
CONNECT ANY DATABASE

Se aplica a: SQL Server (SQL Server 2014 (12.x) a través de la versión actual).
CONTROL SERVER
CONNECT SQL CONTROL SERVER
CONTROL SERVER CONTROL SERVER
CREATE ANY DATABASE ALTER ANY DATABASE
Crear grupo de disponibilidad

Se aplica a: SQL Server (SQL Server 2012 (11.x) a través de la versión actual).
ALTER ANY AVAILABILITY GROUP
CREATE DDL EVENT NOTIFICATION ALTER ANY EVENT NOTIFICATION
CREATE ENDPOINT ALTER ANY ENDPOINT
CREATE LOGIN

Se aplica a: SQL Server 2022 (16.x) y versiones posteriores.
ALTER ANY LOGIN
CREATE SERVER ROLE

Se aplica a: SQL Server (SQL Server 2012 (11.x) a través de la versión actual).
ALTER ANY SERVER ROLE
CREATE TRACE EVENT NOTIFICATION ALTER ANY EVENT NOTIFICATION
EXTERNAL ACCESS ASSEMBLY CONTROL SERVER
IMPERSONATE ANY LOGIN

Se aplica a: SQL Server (SQL Server 2014 (12.x) a través de la versión actual).
CONTROL SERVER
SELECT ALL USER SECURABLES

Se aplica a: SQL Server (SQL Server 2014 (12.x) a través de la versión actual).
CONTROL SERVER
SHUTDOWN CONTROL SERVER
UNSAFE ASSEMBLY CONTROL SERVER
VIEW ANY DATABASE VIEW ANY DEFINITION
VIEW ANY DEFINITION CONTROL SERVER
VIEW SERVER STATE ALTER SERVER STATE

Los tres permisos de servidor siguientes se agregaron en SQL Server 2014 (12.x).

Permiso CONNECT ANY DATABASE
Conceda CONNECT ANY DATABASE a un inicio de sesión que debe conectarse a todas las bases de datos que existen actualmente y a todas las bases de datos que puedan crearse en futuro. No concede ningún permiso en ninguna base de datos más allá de conexión. Combine con SELECT ALL USER SECURABLES o con VIEW SERVER STATE para permitir que un proceso de auditoría vea todos los datos o todos los estados de base de datos en la instancia de SQL Server.

Permiso IMPERSONATE ANY LOGIN
Cuando se concede, permite que un proceso de nivel intermedio suplante la cuenta de los clientes que se conecten a él, a medida que se conecta a las bases de datos. Cuando se deniega, se puede impedir que un inicio de sesión con un alto nivel de privilegios suplante a otros inicios de sesión. Por ejemplo, es posible bloquear un inicio de sesión con el permiso CONTROL SERVER para impedir que suplante a otros inicios de sesión.

Permiso SELECT ALL USER SECURABLES
Cuando se concede, un inicio de sesión puede ver datos de todos los objetos de nivel de esquema, como tablas, vistas y funciones con valores de tabla que residen en esquemas modificables por el usuario (cualquier esquema excepto sys e INFORMATION_SCHEMA) y se puede usar para crear objetos de usuario. Este permiso tiene efecto en todas las bases de datos a las que el usuario puede conectarse. Cuando se deniega, impide el acceso a todos los objetos, a menos que estén en el esquema sys o INFORMATION_SCHEMA. Esto también tiene efecto en la visibilidad de los metadatos de los objetos tratados. Consulte también Configuración de visibilidad de los metadatos.

Permisos

El otorgante de permisos (o la entidad de seguridad especificada con la opción AS) debe tener asignado el mismo permiso con GRANT OPTION o un permiso superior que implique el permiso que se va a conceder. Los miembros del rol fijo de servidor sysadmin pueden conceder cualquier permiso.

Ejemplos

A. Conceder un permiso a un inicio de sesión

En el siguiente ejemplo se concede el permiso CONTROL SERVER al inicio de sesión TerryEminhizer de SQL Server.

USE master;  
GRANT CONTROL SERVER TO TerryEminhizer;  
GO  

B. Conceder un permiso que dispone del permiso GRANT

En el siguiente ejemplo se concede ALTER ANY EVENT NOTIFICATION al inicio de sesión JanethEsteves de SQL Server con el derecho para conceder este permiso a otro inicio de sesión.

USE master;  
GRANT ALTER ANY EVENT NOTIFICATION TO JanethEsteves WITH GRANT OPTION;  
GO  

C. Conceder un permiso a un rol de servidor

En el ejemplo siguiente, se crea un rol de servidor denominado ITDevelopers. Concede el permiso ALTER ANY DATABASE al rol de servidor ITDevelopers.

USE master;  
CREATE SERVER ROLE ITDevelopers ;  
GRANT ALTER ANY DATABASE TO ITDevelopers ;  
GO  

Consulte también

GRANT (Transact-SQL)
DENY (Transact-SQL)
DENY (permisos de servidor de Transact-SQL)
REVOKE (permisos de servidor de Transact-SQL)
Jerarquía de permisos (motor de base de datos)
Entidades de seguridad (motor de base de datos)
Permisos (motor de base de datos)
sys.fn_builtin_permissions (Transact-SQL)
sys.fn_my_permissions (Transact-SQL)
HAS_PERMS_BY_NAME (Transact-SQL)