GRANT, предоставление разрешений на сервер (Transact-SQL)GRANT Server Permissions (Transact-SQL)

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server нетБаза данных SQL Azure нетAzure Synapse Analytics (хранилище данных SQL) нетParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Предоставляет разрешения на сервер.Grants permissions on a server.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQLTopic link icon Transact-SQL Syntax Conventions

СинтаксисSyntax

  
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  

АргументыArguments

permissionpermission
Определяет разрешение, которое может быть предоставлено на сервер.Specifies a permission that can be granted on a server. Список разрешений см. в подразделе "Примечания" далее в этом разделе.For a list of the permissions, see the Remarks section later in this topic.

TO <grantee_principal> указывает участника, которому предоставляется разрешение.TO <grantee_principal> Specifies the principal to which the permission is being granted.

AS <grantor_principal> указывает участника, от которого участник, выполняющий данный запрос, наследует право на предоставление разрешения.AS <grantor_principal> Specifies the principal from which the principal executing this query derives its right to grant the permission.

WITH GRANT OPTIONWITH GRANT OPTION
Показывает, что участнику будет дана возможность предоставлять указанное разрешение другим участникам.Indicates that the principal will also be given the ability to grant the specified permission to other principals.

SQL_Server_loginSQL_Server_login
Указывает имя входа SQL ServerSQL Server.Specifies a SQL ServerSQL Server login.

SQL_Server_login_mapped_to_Windows_loginSQL_Server_login_mapped_to_Windows_login
Указывает имя входа SQL ServerSQL Server, сопоставленное с именем входа Windows.Specifies a SQL ServerSQL Server login mapped to a Windows login.

SQL_Server_login_mapped_to_Windows_groupSQL_Server_login_mapped_to_Windows_group
Указывает имя входа SQL ServerSQL Server, сопоставленное с группой Windows.Specifies a SQL ServerSQL Server login mapped to a Windows group.

SQL_Server_login_mapped_to_certificateSQL_Server_login_mapped_to_certificate
Указывает имя входа SQL ServerSQL Server, сопоставленное с сертификатом.Specifies a SQL ServerSQL Server login mapped to a certificate.

SQL_Server_login_mapped_to_asymmetric_keySQL_Server_login_mapped_to_asymmetric_key
Указывает имя входа SQL ServerSQL Server, сопоставленное с асимметричным ключом.Specifies a SQL ServerSQL Server login mapped to an asymmetric key.

server_roleserver_role
Указывает определяемую пользователем роль сервера.Specifies a user-defined server role.

RemarksRemarks

Разрешения в области сервера предоставляются только в том случае, если текущей база данных является master.Permissions at the server scope can be granted only when the current database is master.

Сведения о разрешениях для сервера можно просмотреть в представлении каталога sys.server_permissions, а сведения о субъектах на уровне сервера — в представлении каталога sys.server_principals.Information about server permissions can be viewed in the sys.server_permissions catalog view, and information about server principals can be viewed in the sys.server_principals catalog view. Сведения о членстве ролей сервера можно просмотреть в представлении каталога sys.server_role_members.Information about membership of server roles can be viewed in the sys.server_role_members catalog view.

Сервер является наивысшим уровнем в иерархии разрешений.A server is the highest level of the permissions hierarchy. Наиболее специфичные и ограниченные разрешения, которые могут быть предоставлены на сервере, представлены в следующей таблице.The most specific and limited permissions that can be granted on a server are listed in the following table.

Разрешение сервераServer permission Подразумевается в разрешении сервераImplied by server permission
ADMINISTER BULK OPERATIONSADMINISTER BULK OPERATIONS CONTROL SERVERCONTROL SERVER
ALTER ANY AVAILABILITY GROUPALTER ANY AVAILABILITY GROUP

Область применения: SQL ServerSQL ServerSQL Server 2012 (11.x)SQL Server 2012 (11.x) до текущей версии).Applies to: SQL ServerSQL Server (SQL Server 2012 (11.x)SQL Server 2012 (11.x) through current version).
CONTROL SERVERCONTROL SERVER
ALTER ANY CONNECTIONALTER ANY CONNECTION CONTROL SERVERCONTROL SERVER
ALTER ANY CREDENTIALALTER ANY CREDENTIAL CONTROL SERVERCONTROL SERVER
ALTER ANY DATABASEALTER ANY DATABASE CONTROL SERVERCONTROL SERVER
ALTER ANY ENDPOINTALTER ANY ENDPOINT CONTROL SERVERCONTROL SERVER
ALTER ANY EVENT NOTIFICATIONALTER ANY EVENT NOTIFICATION CONTROL SERVERCONTROL SERVER
ALTER ANY EVENT SESSIONALTER ANY EVENT SESSION CONTROL SERVERCONTROL SERVER
ALTER ANY LINKED SERVERALTER ANY LINKED SERVER CONTROL SERVERCONTROL SERVER
ALTER ANY LOGINALTER ANY LOGIN CONTROL SERVERCONTROL SERVER
ALTER ANY SERVER AUDITALTER ANY SERVER AUDIT CONTROL SERVERCONTROL SERVER
ALTER ANY SERVER ROLEALTER ANY SERVER ROLE

Область применения: SQL ServerSQL ServerSQL Server 2012 (11.x)SQL Server 2012 (11.x) до текущей версии).Applies to: SQL ServerSQL Server (SQL Server 2012 (11.x)SQL Server 2012 (11.x) through current version).
CONTROL SERVERCONTROL SERVER
ALTER RESOURCESALTER RESOURCES CONTROL SERVERCONTROL SERVER
ALTER SERVER STATEALTER SERVER STATE CONTROL SERVERCONTROL SERVER
ALTER SETTINGSALTER SETTINGS CONTROL SERVERCONTROL SERVER
ALTER TRACEALTER TRACE CONTROL SERVERCONTROL SERVER
AUTHENTICATE SERVERAUTHENTICATE SERVER CONTROL SERVERCONTROL SERVER
CONNECT ANY DATABASECONNECT ANY DATABASE

Область применения: SQL ServerSQL ServerSQL Server 2014 (12.x)SQL Server 2014 (12.x) до текущей версии).Applies to: SQL ServerSQL Server (SQL Server 2014 (12.x)SQL Server 2014 (12.x) through current version).
CONTROL SERVERCONTROL SERVER
CONNECT SQLCONNECT SQL CONTROL SERVERCONTROL SERVER
CONTROL SERVERCONTROL SERVER CONTROL SERVERCONTROL SERVER
CREATE ANY DATABASECREATE ANY DATABASE ALTER ANY DATABASEALTER ANY DATABASE
Создание группы доступностиCREATE AVAILABILITY GROUP

Область применения: SQL ServerSQL ServerSQL Server 2012 (11.x)SQL Server 2012 (11.x) до текущей версии).Applies to: SQL ServerSQL Server (SQL Server 2012 (11.x)SQL Server 2012 (11.x) through current version).
ALTER ANY AVAILABILITY GROUPALTER ANY AVAILABILITY GROUP
CREATE DDL EVENT NOTIFICATIONCREATE DDL EVENT NOTIFICATION ALTER ANY EVENT NOTIFICATIONALTER ANY EVENT NOTIFICATION
CREATE ENDPOINTCREATE ENDPOINT ALTER ANY ENDPOINTALTER ANY ENDPOINT
CREATE SERVER ROLECREATE SERVER ROLE

Область применения: SQL ServerSQL ServerSQL Server 2012 (11.x)SQL Server 2012 (11.x) до текущей версии).Applies to: SQL ServerSQL Server (SQL Server 2012 (11.x)SQL Server 2012 (11.x) through current version).
ALTER ANY SERVER ROLEALTER ANY SERVER ROLE
CREATE TRACE EVENT NOTIFICATIONCREATE TRACE EVENT NOTIFICATION ALTER ANY EVENT NOTIFICATIONALTER ANY EVENT NOTIFICATION
EXTERNAL ACCESS ASSEMBLYEXTERNAL ACCESS ASSEMBLY CONTROL SERVERCONTROL SERVER
IMPERSONATE ANY LOGINIMPERSONATE ANY LOGIN

Область применения: SQL ServerSQL ServerSQL Server 2014 (12.x)SQL Server 2014 (12.x) до текущей версии).Applies to: SQL ServerSQL Server (SQL Server 2014 (12.x)SQL Server 2014 (12.x) through current version).
CONTROL SERVERCONTROL SERVER
SELECT ALL USER SECURABLESSELECT ALL USER SECURABLES

Область применения: SQL ServerSQL ServerSQL Server 2014 (12.x)SQL Server 2014 (12.x) до текущей версии).Applies to: SQL ServerSQL Server (SQL Server 2014 (12.x)SQL Server 2014 (12.x) through current version).
CONTROL SERVERCONTROL SERVER
SHUTDOWNSHUTDOWN CONTROL SERVERCONTROL SERVER
UNSAFE ASSEMBLYUNSAFE ASSEMBLY CONTROL SERVERCONTROL SERVER
VIEW ANY DATABASEVIEW ANY DATABASE VIEW ANY DEFINITIONVIEW ANY DEFINITION
VIEW ANY DEFINITIONVIEW ANY DEFINITION CONTROL SERVERCONTROL SERVER
VIEW SERVER STATEVIEW SERVER STATE ALTER SERVER STATEALTER SERVER STATE

RemarksRemarks

Следующие три разрешения сервера добавлены в SQL Server 2014 (12.x)SQL Server 2014 (12.x).The following three server permissions were added in SQL Server 2014 (12.x)SQL Server 2014 (12.x).

Разрешение CONNECT ANY DATABASECONNECT ANY DATABASE Permission
Предоставьте разрешение CONNECT ANY DATABASE имени входа, которому нужно подключиться ко всем существующим базам данных и ко всем новым базам, которые могут быть созданы в будущем.Grant CONNECT ANY DATABASE to a login that must connect to all databases that currently exist and to any new databases that might be created in future. Не предоставляет каких-либо разрешений в базах данных за пределами соединения.Does not grant any permission in any database beyond connect. Объедините с SELECT ALL USER SECURABLES и VIEW SERVER STATE, чтобы процесс аудита имел доступ к состояниям всех данных или всех баз данных в экземпляре SQL ServerSQL Server.Combine with SELECT ALL USER SECURABLES or VIEW SERVER STATE to allow an auditing process to view all data or all database states on the instance of SQL ServerSQL Server.

Разрешение IMPERSONATE ANY LOGINIMPERSONATE ANY LOGIN Permission
После предоставления разрешает процессу среднего уровня олицетворять учетную запись клиентов, подключающихся к ней, так как она подключается к базам данных.When granted, allows a middle-tier process to impersonate the account of clients connecting to it, as it connects to databases. При запрещении имени входа с высоким уровнем прав может быть запрещено олицетворение других имен входа.When denied, a high privileged login can be blocked from impersonating other logins. Например, имени входа с разрешением CONTROL SERVER можно запретить олицетворение других имен входа.For example, a login with CONTROL SERVER permission can be blocked from impersonating other logins.

Разрешение SELECT ALL USER SECURABLESSELECT ALL USER SECURABLES Permission
После предоставления имя входа, например аудитор, сможет просматривать данные во всех базах данных, к которым может подключаться пользователь.When granted, a login such as an auditor can view data in all databases that the user can connect to. При запрещении предотвращает доступ к объектам, если они не будут находиться в схеме sys.When denied, prevents access to objects unless they are in the sys schema.

РазрешенияPermissions

Лицо, предоставляющее разрешение (или участник, указанный с аргументом AS), должны иметь либо само разрешение с аргументом GRANT OPTION, либо разрешение более высокого уровня, которое включает в себя предоставленное разрешение.The grantor (or the principal specified with the AS option) must have either the permission itself with GRANT OPTION or a higher permission that implies the permission being granted. Члены предопределенной роли сервера sysadmin могут предоставлять любые разрешения.Members of the sysadmin fixed server role can grant any permission.

ПримерыExamples

A.A. Предоставление разрешения имени входаGranting a permission to a login

В следующем примере разрешение CONTROL SERVER предоставляется имени входа SQL ServerSQL Server TerryEminhizer.The following example grants CONTROL SERVER permission to the SQL ServerSQL Server login TerryEminhizer.

USE master;  
GRANT CONTROL SERVER TO TerryEminhizer;  
GO  

Б.B. Предоставление разрешения, имеющего разрешение GRANTGranting a permission that has GRANT permission

В следующем примере разрешение ALTER ANY EVENT NOTIFICATION предоставляется имени входа SQL ServerSQL Server JanethEsteves с правом предоставлять разрешения другому имени входа.The following example grants ALTER ANY EVENT NOTIFICATION to SQL ServerSQL Server login JanethEsteves with the right to grant that permission to another login.

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

В.C. Предоставление разрешения роли сервераGranting a permission to a server role

Следующий пример показывает создание двух ролей сервера с именами ITDevAdmin и ITDevelopers.The following example creates two server roles named ITDevAdmin and ITDevelopers. Разрешение ALTER ANY DATABASE предоставляется определяемой пользователем роли сервера ITDevAdmin с параметром WITH GRANT, который позволяет роли сервера ITDevAdmin повторно присваивать разрешение ALTER ANY DATABASE.It grants the ALTER ANY DATABASE permission to the ITDevAdmin user-defined server role including the WITH GRANT option so that the ITDevAdmin server role can reassign the ALTER ANY DATABASE permission. Затем в примере ITDevelopers предоставляется разрешение на использование разрешения ALTER ANY DATABASE роли сервера ITDevAdmin.Then, the example grants the ITDevelopers the permission to use the ALTER ANY DATABASE permission of the ITDevAdmin server role.

USE master;  
CREATE SERVER ROLE ITDevAdmin ;  
CREATE SERVER ROLE ITDevelopers ;  
GRANT ALTER ANY DATABASE TO ITDevAdmin WITH GRANT OPTION ;  
GRANT ALTER ANY DATABASE TO ITDevelopers AS ITDevAdmin ;  
GO  

См. также:See Also

GRANT (Transact-SQL) GRANT (Transact-SQL)
DENY (Transact-SQL) DENY (Transact-SQL)
DENY, запрет разрешения на сервере (Transact-SQL) DENY Server Permissions (Transact-SQL)
REVOKE, отмена разрешений на сервере (Transact-SQL) REVOKE Server Permissions (Transact-SQL)
Иерархия разрешений (ядро СУБД) Permissions Hierarchy (Database Engine)
Участники (ядро СУБД) Principals (Database Engine)
Разрешения (ядро СУБД) Permissions (Database Engine)
sys.fn_builtin_permissions (Transact-SQL) sys.fn_builtin_permissions (Transact-SQL)
sys.fn_my_permissions (Transact-SQL) sys.fn_my_permissions (Transact-SQL)
HAS_PERMS_BY_NAME (Transact-SQL)HAS_PERMS_BY_NAME (Transact-SQL)