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)

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)

Участники (компонент Database Engine)

Разрешения (компонент Database Engine)