GRANT, предоставление разрешений участникам на уровне сервера (Transact-SQL)
Выдает разрешения для имени входа SQL Server.
Синтаксические обозначения Transact-SQL
Синтаксис
GRANT permission [ ,...n ] }
ON
{ [ LOGIN :: SQL_Server_login ]
| [ SERVER ROLE :: server_role ] }
TO <server_principal> [ ,...n ]
[ WITH GRANT OPTION ]
[ AS SQL_Server_login ]
<server_principal> ::=
SQL_Server_login
| SQL_Server_login_from_Windows_login
| SQL_Server_login_from_certificate
| SQL_Server_login_from_AsymKey
| server_role
Аргументы
permission
Указывает разрешение, которое может быть выдано для имени входа SQL Server. Список разрешений см. далее в этом разделе, в подразделе «Примечания».LOGIN :: SQL_Server_login
Указывает имя входа SQL Server, которому предоставляется разрешение. Требуется квалификатор области (::).SERVER ROLE :: server_role
Указывает определяемую пользователем роль сервера, которой предоставляется разрешение. Требуется квалификатор области (::).TO <server_principal>
Указывает имя входа SQL Server или роль сервера, которой представляется разрешение.SQL_Server_login
Задает имя входа SQL Server.SQL_Server_login_from_Windows_login
Задает имя входа SQL Server, созданное из учетных данных Windows.SQL_Server_login_from_certificate
Указывает имя входа SQL Server, сопоставленного с сертификатом.SQL_Server_login_from_AsymKey
Указывает имя входа SQL Server, сопоставленного с ассиметричным ключом.server_role
Указывает имя определяемой пользователем роли сервера.WITH GRANT OPTION
Показывает, что участнику будет дана возможность предоставлять указанное разрешение другим участникам.AS SQL_Server_login
Указывает имя входа SQL Server, с использованием которого участник, выполняющий этот запрос, осуществляет свое право на предоставление разрешений.
Замечания
Разрешения в области сервера предоставляются только в том случае, если текущей является база данных master.
Данные о разрешениях сервера отображаются в представлении каталога sys.server_permissions. Данные о серверах-участниках отображаются в представлении каталога sys.server_principals.
Имена входа SQL Server и роли сервера являются защищаемыми объектами уровня сервера. Наиболее специфичные и ограниченные разрешения, которые могут быть выданы для имени входа или роли сервера SQL Server, перечислены в следующей таблице вместе с общими разрешениями, неявно содержащими их.
Разрешение для имени входа SQL Server или роли сервера |
Содержится в разрешении для имени входа SQL Server или роли сервера |
Содержится в разрешении сервера |
---|---|---|
CONTROL |
CONTROL |
CONTROL SERVER |
IMPERSONATE |
CONTROL |
CONTROL SERVER |
VIEW DEFINITION |
CONTROL |
VIEW ANY DEFINITION |
ALTER |
CONTROL |
ALTER ANY LOGIN ALTER ANY SERVER ROLE |
Разрешения
Для имен входа требуется разрешение CONTROL на имя входа или разрешение ALTER ANY LOGIN на сервер.
Для ролей сервера требуется разрешение CONTROL на роль сервера или разрешение ALTER ANY SERVER ROLE на сервер.
Примеры
А.Выдача разрешения IMPERSONATE для имени входа
В следующем примере разрешение IMPERSONATE для имени входа SQL Server WanidaBenshoof выдается имени входа SQL Server, созданному на основе пользователя Windows AdvWorks\YoonM.
USE master;
GRANT IMPERSONATE ON LOGIN::WanidaBenshoof to [AdvWorks\YoonM];
GO
Б.Выдача разрешения VIEW DEFINITION с параметром GRANT OPTION
В следующем примере разрешение VIEW DEFINITION для имени входа SQL Server EricKurjan выдается имени входа SQL Server RMeyyappan с параметром GRANT OPTION.
USE master;
GRANT VIEW DEFINITION ON LOGIN::EricKurjan TO RMeyyappan
WITH GRANT OPTION;
GO
В.Предоставление разрешения VIEW DEFINITION на роль сервера
В следующем примере разрешение VIEW DEFINITION для роли сервера Sales предоставляется роли сервера Auditors.
USE master;
GRANT VIEW DEFINITION ON SERVER ROLE::Sales TO Auditors ;
GO
См. также
Справочник
sys.server_principals (Transact-SQL)
sys.server_permissions (Transact-SQL)
Функции безопасности (Transact-SQL)
Хранимые процедуры безопасности (Transact-SQL)