GRANT, предоставление разрешений на сервер (Transact-SQL)
Область применения: SQL Server Управляемый экземпляр SQL Azure
Предоставляет разрешения на сервер.
Соглашения о синтаксисе 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 Применимо к: SQL Server (SQL Server 2012 (11.x) до текущей версии. |
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 Применимо к: SQL Server (SQL Server 2012 (11.x) до текущей версии. |
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 Область применения: SQL Server (SQL Server 2014 (12.x) до текущей версии. |
CONTROL SERVER |
CONNECT SQL | CONTROL SERVER |
CONTROL SERVER | CONTROL SERVER |
CREATE ANY DATABASE | ALTER ANY DATABASE |
CREATE AVAILABILITY GROUP Применимо к: SQL Server (SQL Server 2012 (11.x) до текущей версии. |
ALTER ANY AVAILABILITY GROUP |
CREATE DDL EVENT NOTIFICATION | ALTER ANY EVENT NOTIFICATION |
CREATE ENDPOINT … | ALTER ANY ENDPOINT |
CREATE LOGIN Область применения: SQL Server 2022 (16.x) и более поздних версий. |
ALTER ANY LOGIN |
CREATE SERVER ROLE Применимо к: SQL Server (SQL Server 2012 (11.x) до текущей версии. |
ALTER ANY SERVER ROLE |
CREATE TRACE EVENT NOTIFICATION | ALTER ANY EVENT NOTIFICATION |
EXTERNAL ACCESS ASSEMBLY | CONTROL SERVER |
IMPERSONATE ANY LOGIN Область применения: SQL Server (SQL Server 2014 (12.x) до текущей версии. |
CONTROL SERVER |
SELECT ALL USER SECURABLES Область применения: SQL Server (SQL Server 2014 (12.x) до текущей версии. |
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 |
В SQL Server 2014 (12.x) добавлены следующие три разрешения сервера.
Разрешение CONNECT ANY DATABASE
Предоставьте разрешение CONNECT ANY DATABASE имени входа, которому нужно подключиться ко всем существующим базам данных и ко всем новым базам, которые могут быть созданы в будущем. Не предоставляет каких-либо разрешений в базах данных за пределами соединения. Объединение с SELECT ALL USER SECURABLES или VIEW SERVER STATE , чтобы разрешить процесс аудита просматривать все данные или все состояния базы данных в экземпляре SQL Server.
Разрешение IMPERSONATE ANY LOGIN
После предоставления разрешает процессу среднего уровня олицетворять учетную запись клиентов, подключающихся к ней, так как она подключается к базам данных. При запрещении имени входа с высоким уровнем прав может быть запрещено олицетворение других имен входа. Например, имени входа с разрешением CONTROL SERVER можно запретить олицетворение других имен входа.
Разрешение SELECT ALL USER SECURABLES
При предоставлении этого разрешения учетная запись может просматривать данные всех объектов уровня схемы, таких как таблицы, представления и функции с табличным значением, которые размещаются в схемах, доступных для записи пользователям (любая схема, кроме sys и INFORMATION_SCHEMA), и могут использоваться для создания пользовательских объектов. Это разрешение действует во всех базах данных, к которым может подключаться пользователь. Отмена разрешения блокирует доступ ко всем объектам, кроме находящихся в схеме sys или INFORMATION_SCHEMA. Это также влияет на видимость метаданных охватываемых объектов. Дополнительные сведения: Настройка видимости метаданных.
Разрешения
Лицо, предоставляющее разрешение (или участник, указанный с аргументом AS), должны иметь либо само разрешение с аргументом GRANT OPTION, либо разрешение более высокого уровня, которое включает в себя предоставленное разрешение. Члены предопределенной роли сервера sysadmin могут предоставлять любые разрешения.
Примеры
А. Предоставление разрешения имени входа
В следующем примере разрешение CONTROL SERVER
предоставляется имени входа SQL Server TerryEminhizer
.
USE master;
GRANT CONTROL SERVER TO TerryEminhizer;
GO
B. Предоставление разрешения, имеющего разрешение GRANT
В следующем примере разрешение ALTER ANY EVENT NOTIFICATION
предоставляется имени входа SQL Server JanethEsteves
с правом предоставлять разрешения другому имени входа.
USE master;
GRANT ALTER ANY EVENT NOTIFICATION TO JanethEsteves WITH GRANT OPTION;
GO
C. Предоставление разрешения роли сервера
В следующем примере создается роль сервера с именем ITDevelopers
. Роли сервера ITDevelopers
предоставляется разрешение ALTER ANY DATABASE
.
USE master;
CREATE SERVER ROLE ITDevelopers ;
GRANT ALTER ANY DATABASE TO ITDevelopers ;
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)