GRANT, предоставление разрешений на сервер (Transact-SQL)
Предоставляет разрешения на сервер.
Синтаксические обозначения Transact-SQL
Синтаксис
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
Аргументы
permission
Определяет разрешение, которое может быть предоставлено на сервер. Список разрешений см. в подразделе «Примечания» далее в этом разделе.TO <grantee_principal>
Указывает участника, которому дается разрешение.AS <grantor_principal>
Указывает участника, от которого администратор доступа, выполняющий запрос, наследует право предоставления разрешений.WITH GRANT OPTION
Указывает, что участнику будет дана возможность предоставлять указанное разрешение другим участникам.SQL_Server_login
Указывает имя входа SQL Server.SQL_Server_login_mapped_to_Windows_login
Указывает имя входа SQL Server, сопоставленное с именем входа Windows.SQL_Server_login_mapped_to_Windows_group
Указывает имя входа SQL Server, сопоставленное с группой Windows.SQL_Server_login_mapped_to_certificate
Указывает имя входа SQL Server, сопоставленное с сертификатом.SQL_Server_login_mapped_to_asymmetric_key
Указывает имя входа SQL Server, сопоставленное с асимметричным ключом.server_role
Указывает определяемую пользователем роль сервера.
Замечания
Разрешения в области сервера предоставляются только в том случае, если текущей является база данных master.
Сведения о разрешениях для сервера можно просмотреть в представлении каталога sys.server_permissions, а сведения об участниках на уровне сервера — в представлении каталога sys.server_principals. Сведения о членстве ролей сервера можно получить в представлении каталога sys.server_role_members.
Сервер является наивысшим уровнем в иерархии разрешений. Наиболее специфичные и ограниченные разрешения, которые могут быть предоставлены на сервере, представлены в следующей таблице.
Разрешение сервера |
Содержится в разрешении сервера |
---|---|
ADMINISTER BULK OPERATIONS |
CONTROL SERVER |
ALTER ANY AVAILABILITY GROUP |
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 |
CONTROL SERVER |
ALTER RESOURCES |
CONTROL SERVER |
ALTER SERVER STATE |
CONTROL SERVER |
ALTER SETTINGS |
CONTROL SERVER |
ALTER TRACE |
CONTROL SERVER |
AUTHENTICATE SERVER |
CONTROL SERVER |
CONNECT SQL |
CONTROL SERVER |
CONTROL SERVER |
CONTROL SERVER |
CREATE ANY DATABASE |
ALTER ANY DATABASE |
CREATE AVAILABILITY GROUP |
ALTER ANY AVAILABILITY GROUP |
CREATE DDL EVENT NOTIFICATION |
ALTER ANY EVENT NOTIFICATION |
CREATE ENDPOINT |
ALTER ANY ENDPOINT |
CREATE SERVER ROLE |
ALTER ANY SERVER ROLE |
CREATE TRACE EVENT NOTIFICATION |
ALTER ANY EVENT NOTIFICATION |
EXTERNAL ACCESS ASSEMBLY |
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 |
Разрешения
Лицо, предоставляющее разрешение (или участник, указанный с аргументом AS), должны иметь либо само разрешение с аргументом GRANT OPTION, либо разрешение более высокого уровня, которое включает в себя предоставленное разрешение. Члены предопределенной роли сервера sysadmin могут предоставлять любые разрешения.
Примеры
А.Предоставление разрешения имени входа
В следующем примере разрешение CONTROL SERVER предоставляется имени входа SQL Server TerryEminhizer.
USE master;
GRANT CONTROL SERVER TO TerryEminhizer;
GO
Б.Предоставление разрешения, имеющего разрешение GRANT
В следующем примере разрешение ALTER ANY EVENT NOTIFICATION предоставляется имени входа SQL Server JanethEsteves с правом предоставлять разрешения другому имени входа.
USE master;
GRANT ALTER ANY EVENT NOTIFICATION TO JanethEsteves WITH GRANT OPTION;
GO
В.Предоставление разрешения роли сервера
Следующий пример показывает создание двух ролей сервера с именами ITDevAdmin и ITDevelopers. Разрешение ALTER ANY DATABASE предоставляется определяемой пользователем роли сервера ITDevAdmin с параметром WITH GRANT, который позволяет роли сервера ITDevAdmin повторно присваивать разрешение ALTER ANY DATABASE. Затем в примере ITDevelopers предоставляется разрешение на использование разрешения ALTER ANY DATABASE роли сервера ITDevAdmin.
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
См. также
Справочник
Инструкция GRANT (Transact-SQL)
DENY, запрет разрешений на сервере (Transact-SQL)
REVOKE, отмена разрешений сервера (Transact-SQL)
sys.fn_builtin_permissions (Transact-SQL)
sys.fn_my_permissions (Transact-SQL)
HAS_PERMS_BY_NAME (Transact-SQL)
Основные понятия
Иерархия разрешений (компонент Database Engine)