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> указывает участника, от которого участник, выполняющий данный запрос, наследует право на предоставление разрешения.

С ОПЦИЕЙ GRANT
Показывает, что участнику будет дана возможность предоставлять указанное разрешение другим участникам.

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.

Сервер является наивысшим уровнем в иерархии разрешений. Наиболее специфичные и ограниченные разрешения, которые могут быть предоставлены на сервере, представлены в следующей таблице.

Разрешение сервера Подразумевается в разрешении сервера
АДМИНИСТРИРОВАНИЕ МАССОВЫХ ОПЕРАЦИЙ сервер управления
ИЗМЕНЕНИЕ ЛЮБОГО AVAILABILITY GROUP

Применимо к: SQL Server (SQL Server 2012 (11.x) до текущей версии.
сервер управления
ИЗМЕНЕНИЕ ЛЮБОГО СОЕДИНЕНИЯ сервер управления
ИЗМЕНЕНИЕ ЛЮБОГО CREDENTIAL сервер управления
ИЗМЕНЕНИЕ ЛЮБОГО DATABASE сервер управления
ИЗМЕНЕНИЕ ЛЮБОГО ENDPOINT сервер управления
ИЗМЕНЕНИЕ ЛЮБОГО EVENT NOTIFICATION сервер управления
ИЗМЕНЕНИЕ ЛЮБОГО EVENT SESSION сервер управления
ИЗМЕНИТЬ ЛЮБОЙ ПОДКЛЮЧЕННЫЙ СЕРВЕР сервер управления
ИЗМЕНЕНИЕ ЛЮБОГО LOGIN сервер управления
ИЗМЕНЕНИЕ ЛЮБОГО SERVER AUDIT сервер управления
ИЗМЕНЕНИЕ ЛЮБОГО SERVER ROLE

Применимо к: SQL Server (SQL Server 2012 (11.x) до текущей версии.
сервер управления
ИЗМЕНИТЬ РЕСУРСЫ сервер управления
Изменить состояние сервера (ALTER SERVER STATE) сервер управления
ИЗМЕНИТЬ НАСТРОЙКИ сервер управления
ALTER TRACE (изменение трассировки) сервер управления
АУТЕНТИФИЦИРУЙТЕ СЕРВЕР сервер управления
ПОДКЛЮЧЕНИЕ ЛЮБОГО DATABASE

Область применения: SQL Server (SQL Server 2014 (12.x) до текущей версии.
сервер управления
CONNECT SQL сервер управления
сервер управления сервер управления
СОЗДАНИЕ ЛЮБОГО DATABASE ИЗМЕНЕНИЕ ЛЮБОГО DATABASE
CREATE AVAILABILITY GROUP

Применимо к: SQL Server (SQL Server 2012 (11.x) до текущей версии.
ИЗМЕНЕНИЕ ЛЮБОГО AVAILABILITY GROUP
СОЗДАТЬ DDL EVENT NOTIFICATION ИЗМЕНЕНИЕ ЛЮБОГО EVENT NOTIFICATION
CREATE ENDPOINT ИЗМЕНЕНИЕ ЛЮБОГО ENDPOINT
CREATE LOGIN

Область применения: SQL Server 2022 (16.x) и более поздних версий.
ИЗМЕНЕНИЕ ЛЮБОГО LOGIN
CREATE SERVER ROLE

Применимо к: SQL Server (SQL Server 2012 (11.x) до текущей версии.
ИЗМЕНЕНИЕ ЛЮБОГО SERVER ROLE
СОЗДАТЬ ТРАССЁР EVENT NOTIFICATION ИЗМЕНЕНИЕ ЛЮБОГО EVENT NOTIFICATION
ВНЕШНИЙ ДОСТУП ASSEMBLY сервер управления
ОЛИЦЕТВОРЕНИЯ ЛЮБОГО LOGIN

Область применения: SQL Server (SQL Server 2014 (12.x) до текущей версии.
сервер управления
ВЫБЕРИТЕ ВСЕ USER ЗАЩИЩАЕМЫЕ ОБЪЕКТЫ

Область применения: SQL Server (SQL Server 2014 (12.x) до текущей версии.
сервер управления
SHUTDOWN сервер управления
НЕБЕЗОПАСНО ASSEMBLY сервер управления
VIEW ЛЮБОЙ DATABASE VIEW ЛЮБОЕ ОПРЕДЕЛЕНИЕ
VIEW ЛЮБОЕ ОПРЕДЕЛЕНИЕ сервер управления
VIEW ЛЮБОЕ ОПРЕДЕЛЕНИЕ ПРОИЗВОДИТЕЛЬНОСТИ

Область применения: SQL Server 2022 (16.x) и более поздних версий.
VIEW ЛЮБОЕ ОПРЕДЕЛЕНИЕ
VIEW ЛЮБОЕ ОПРЕДЕЛЕНИЕ БЕЗОПАСНОСТИ

Область применения: SQL Server 2022 (16.x) и более поздних версий.
VIEW ЛЮБОЕ ОПРЕДЕЛЕНИЕ
VIEW СОСТОЯНИЕ ПРОИЗВОДИТЕЛЬНОСТИ СЕРВЕРА

Область применения: SQL Server 2022 (16.x) и более поздних версий.
VIEW СОСТОЯНИЕ СЕРВЕРА
VIEW СОСТОЯНИЕ БЕЗОПАСНОСТИ СЕРВЕРА

Область применения: SQL Server 2022 (16.x) и более поздних версий.
VIEW СОСТОЯНИЕ СЕРВЕРА
VIEW СОСТОЯНИЕ СЕРВЕРА Изменить состояние сервера (ALTER SERVER STATE)

В SQL Server 2014 (12.x) добавлены следующие три разрешения сервера.

ПОДКЛЮЧИТЬ ЛЮБОЙ DATABASE Разрешение
Дайте CONNECT ANY DATABASE к логину, который должен подключаться ко всем существующим базам данных, а также к новым базам, которые могут быть созданы в будущем. Не предоставляет каких-либо разрешений в базах данных за пределами соединения. Комбинируйте с SELECT ALL USER SECURABLES или VIEW SERVER STATE, чтобы аудит мог просматривать все данные или все состояния базы данных на экземпляре SQL Server.

ИМИТИРУЙТЕ ЛЮБОГО LOGIN Разрешение
После предоставления разрешает процессу среднего уровня олицетворять учетную запись клиентов, подключающихся к ней, так как она подключается к базам данных. При запрещении имени входа с высоким уровнем прав может быть запрещено олицетворение других имен входа. Например, имени входа с разрешением CONTROL SERVER можно запретить олицетворение других имен входа.

ВЫБЕРИТЕ ВСЕХ USER Разрешение на ГАРАНТИРУЕМЫЕ
При предоставлении этого разрешения учетная запись может просматривать данные всех объектов уровня схемы, таких как таблицы, представления и функции с табличным значением, которые размещаются в схемах, доступных для записи пользователям (любая схема, кроме 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  

В. Предоставление разрешения роли сервера

В следующем примере создается роль сервера с именем ITDevelopers. Роли сервера ALTER ANY DATABASE предоставляется разрешение ITDevelopers.

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)