Поделиться через


GRANT, предоставление разрешений на базу данных (Transact-SQL)

Применимо к:SQL ServerБаза данных Azure SQLУправляемый экземпляр Azure SQLAzure Synapse AnalyticsСистема платформы аналитики (PDW)Конечная точка аналитики SQL в Microsoft FabricХранилище в Microsoft FabricБаза данных SQL в предварительном просмотре Microsoft Fabric

Предоставляет разрешения на базу данных в SQL Server.

Соглашения о синтаксисе Transact-SQL

Syntax


GRANT <permission> [ ,...n ]
    TO <database_principal> [ ,...n ] [ WITH GRANT OPTION ]
    [ AS <database_principal> ]

<permission>::=
permission | ALL [ PRIVILEGES ]

<database_principal> ::=
    Database_user
  | Database_role
  | Application_role
  | Database_user_mapped_to_Windows_User
  | Database_user_mapped_to_Windows_Group
  | Database_user_mapped_to_certificate
  | Database_user_mapped_to_asymmetric_key
  | Database_user_with_no_login

Arguments

permission — указывает предоставляемое разрешение для базы данных. Список разрешений см. в подразделе "Примечания" далее в этом разделе.

ALL — этот параметр предоставляет не все возможные разрешения. Предоставление ALL эквивалентно предоставлению следующих разрешений: BACKUP DATABASE, BACKUP LOG, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE RULE, CREATE TABLE и CREATE VIEW.

PRIVILEGES — включено для обеспечения совместимости с требованиями ANSI-92. Не изменяет работу ALL.

WITH GRANT OPTION — указывает, что субъекту будет дана возможность предоставлять заданное разрешение другим субъектам.

AS <database_principal> — указывает участника, от которого наследует право на предоставление разрешения тот участник, который выполняет данный запрос.

Database_user — указывает пользователя базы данных.

Database_role — указывает роль базы данных.

Application_role применимо к SQL Server 2008 (10.0.x) и более поздним версиям, База данных SQL

Указывает роль приложения.

Database_user_mapped_to_Windows_User применимо к SQL Server 2008 (10.0.x) и более поздним версиям.

Указывает пользователя базы данных, сопоставленного с пользователем Windows.

Database_user_mapped_to_Windows_Group применимо к SQL Server 2008 (10.0.x) и более поздним версиям

Указывает пользователя базы данных, сопоставленного с группой Windows.

Database_user_mapped_to_certificate применимо к SQL Server 2008 (10.0.x) и более поздним версиям.

Указывает пользователя базы данных, сопоставленного с сертификатом.

Database_user_mapped_to_asymmetric_key применимо к SQL Server 2008 (10.0.x) и более поздним версиям.

Указывает пользователя базы данных, сопоставленного с асимметричным ключом.

Database_user_with_no_login — указывает пользователя базы данных, не сопоставленного с субъектом серверного уровня.

Remarks

Important

Сочетание разрешений ALTER и REFERENCE в некоторых случаях может позволить просматривать данные или выполнять несанкционированные функции. Пример. Пользователь с разрешением ALTER на таблицу и разрешением REFERENCE на функцию может создавать вычисляемый столбец на основе функции и в результате выполнять ее. В этом случае пользователю также требуется разрешение SELECT на вычисляемый столбец.

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

Database permission Содержится в разрешении базы данных Подразумевается в разрешении сервера
УПРАВЛЕНИЕ МАССОВЫМИ ОПЕРАЦИЯМИ С БАЗОЙ ДАННЫХ
Область применения: База данных SQL.
CONTROL CONTROL SERVER
ALTER CONTROL ALTER ANY DATABASE (ИЗМЕНЕНИЕ ЛЮБОЙ БАЗЫ ДАННЫХ).
ИЗМЕНИТЬ ЛЮБУЮ РОЛЬ ПРИЛОЖЕНИЯ ALTER CONTROL SERVER
ИЗМЕНИТЬ ЛЮБУЮ СБОРКУ ALTER CONTROL SERVER
Изменить любой асимметричный ключ ALTER CONTROL SERVER
ИЗМЕНИТЬ ЛЮБОЙ СЕРТИФИКАТ ALTER CONTROL SERVER
Изменить любой ключ шифрования столбца ALTER CONTROL SERVER
ALTER ANY COLUMN MASTER KEY DEFINITION ALTER CONTROL SERVER
ИЗМЕНЯТЬ ЛЮБОЙ КОНТРАКТ ALTER CONTROL SERVER
ИЗМЕНИТЬ ЛЮБУЮ ПРОВЕРКУ БАЗЫ ДАННЫХ ALTER ИЗМЕНЕНИЕ ЛЮБОГО АУДИТА СЕРВЕРА
ИЗМЕНИТЬ ЛЮБОЙ ТРИГГЕР DDL БАЗЫ ДАННЫХ ALTER CONTROL SERVER
Изменение любых уведомлений о событиях базы данных (ALTER ANY DATABASE EVENT NOTIFICATION) ALTER ИЗМЕНЕНИЕ ЛЮБОГО УВЕДОМЛЕНИЯ О СОБЫТИИ
ИЗМЕНИТЬ ЛЮБОЙ СЕССИЮ СОБЫТИЯ БАЗЫ ДАННЫХ
Область применения: База данных SQL.
ALTER ИЗМЕНИТЬ ЛЮБУЮ СЕССИЮ СОБЫТИЯ
ИЗМЕНИТЬ ЛЮБУЮ КОНФИГУРАЦИЮ В ОБЛАСТИ БАЗЫ ДАННЫХ
Область применения: SQL Server 2016 (13.x) и более поздних версий База данных SQL.
CONTROL CONTROL SERVER
ИЗМЕНИТЬ ЛЮБОЕ ПРОСТРАНСТВО ДАННЫХ ALTER CONTROL SERVER
ИЗМЕНЕНИЕ ЛЮБОГО ВНЕШНЕГО ИСТОЧНИКА ДАННЫХ ALTER CONTROL SERVER
ИЗМЕНИТЬ ЛЮБОЙ ВНЕШНИЙ ФОРМАТ ФАЙЛА ALTER CONTROL SERVER
ALTER ANY EXTERNAL LIBRARY
Область применения: SQL Server 2017 (14.x).
CONTROL CONTROL SERVER
ИЗМЕНИТЬ ЛЮБОЙ ПОЛНОТЕКСТОВЫЙ КАТАЛОГ ALTER CONTROL SERVER
ИЗМЕНИТЬ ЛЮБУЮ МАСКУ CONTROL CONTROL SERVER
ИЗМЕНЯТЬ ЛЮБОЙ ТИП СООБЩЕНИЯ ALTER CONTROL SERVER
ИЗМЕНИТЬ ЛЮБУЮ УДАЛЕННУЮ СВЯЗЬ СЕРВИСА ALTER CONTROL SERVER
ИЗМЕНИТЬ ЛЮБУЮ РОЛЬ ALTER CONTROL SERVER
ИЗМЕНИТЬ ЛЮБОЙ МАРШРУТ ALTER CONTROL SERVER
ИЗМЕНИТЬ ЛЮБУЮ СХЕМУ ALTER CONTROL SERVER
ИЗМЕНИТЬ ЛЮБУЮ ПОЛИТИКУ БЕЗОПАСНОСТИ
Область применения: База данных SQL Azure.
CONTROL CONTROL SERVER
ИЗМЕНЕНИЕ ЛЮБОЙ КЛАССИФИКАЦИИ КОНФИДЕНЦИАЛЬНОСТИ
Область применения: SQL Server (SQL Server 2019 и более поздних версий) и База данных SQL Azure.
CONTROL CONTROL SERVER
ИЗМЕНЕНИЕ ЛЮБОЙ СЛУЖБЫ ALTER CONTROL SERVER
ИЗМЕНИТЬ ЛЮБОЙ СИММЕТРИЧНЫЙ КЛЮЧ ALTER CONTROL SERVER
ИЗМЕНИТЬ ПОЛЬЗОВАТЕЛЯ ALTER CONTROL SERVER
AUTHENTICATE CONTROL AUTHENTICATE SERVER
BACKUP DATABASE CONTROL CONTROL SERVER
BACKUP LOG CONTROL CONTROL SERVER
CHECKPOINT CONTROL CONTROL SERVER
CONNECT CONNECT REPLICATION CONTROL SERVER
CONNECT REPLICATION CONTROL CONTROL SERVER
CONTROL CONTROL CONTROL SERVER
CREATE AGGREGATE ALTER CONTROL SERVER
СОЗДАНИЕ ЛЮБОЙ ВНЕШНЕЙ БИБЛИОТЕКИ
Область применения: SQL Server 2017 (14.x).
CONTROL CONTROL SERVER
CREATE ASSEMBLY ИЗМЕНИТЬ ЛЮБУЮ СБОРКУ CONTROL SERVER
СОЗДАНИЕ АСИММЕТРИЧНОГО КЛЮЧА Изменить любой асимметричный ключ CONTROL SERVER
CREATE CERTIFICATE ИЗМЕНИТЬ ЛЮБОЙ СЕРТИФИКАТ CONTROL SERVER
CREATE CONTRACT ИЗМЕНЯТЬ ЛЮБОЙ КОНТРАКТ CONTROL SERVER
CREATE DATABASE CONTROL CREATE ANY DATABASE (СОЗДАНИЕ ЛЮБОЙ БАЗЫ ДАННЫХ);
СОЗДАНИЕ УВЕДОМЛЕНИЯ О СОБЫТИЯХ БАЗЫ ДАННЫХ DDL Изменение любых уведомлений о событиях базы данных (ALTER ANY DATABASE EVENT NOTIFICATION) СОЗДАНИЕ УВЕДОМЛЕНИЯ О СОБЫТИИ DDL
CREATE DEFAULT ALTER CONTROL SERVER
СОЗДАНИЕ КАТАЛОГА FULLTEXT ИЗМЕНИТЬ ЛЮБОЙ ПОЛНОТЕКСТОВЫЙ КАТАЛОГ CONTROL SERVER
CREATE FUNCTION ALTER CONTROL SERVER
СОЗДАТЬ ТИП СООБЩЕНИЯ ИЗМЕНЯТЬ ЛЮБОЙ ТИП СООБЩЕНИЯ CONTROL SERVER
CREATE PROCEDURE ALTER CONTROL SERVER
CREATE QUEUE ALTER CONTROL SERVER
СОЗДАНИЕ ПРИВЯЗКИ К УДАЛЕННОЙ СЛУЖБЕ ИЗМЕНИТЬ ЛЮБУЮ УДАЛЕННУЮ СВЯЗЬ СЕРВИСА CONTROL SERVER
CREATE ROLE ИЗМЕНИТЬ ЛЮБУЮ РОЛЬ CONTROL SERVER
CREATE ROUTE ИЗМЕНИТЬ ЛЮБОЙ МАРШРУТ CONTROL SERVER
CREATE RULE ALTER CONTROL SERVER
CREATE SCHEMA ИЗМЕНИТЬ ЛЮБУЮ СХЕМУ CONTROL SERVER
CREATE SERVICE ИЗМЕНЕНИЕ ЛЮБОЙ СЛУЖБЫ CONTROL SERVER
СОЗДАНИЕ СИММЕТРИЧНОГО КЛЮЧА ИЗМЕНИТЬ ЛЮБОЙ СИММЕТРИЧНЫЙ КЛЮЧ CONTROL SERVER
CREATE SYNONYM ALTER CONTROL SERVER
CREATE TABLE ALTER CONTROL SERVER
CREATE TYPE ALTER CONTROL SERVER
CREATE VIEW ALTER CONTROL SERVER
СОЗДАТЬ КОЛЛЕКЦИЮ XML-СХЕМ ALTER CONTROL SERVER
DELETE CONTROL CONTROL SERVER
EXECUTE CONTROL CONTROL SERVER
ВЫПОЛНЕНИЕ ЛЮБОЙ ВНЕШНЕЙ КОНЕЧНОЙ ТОЧКИ
Область применения: База данных SQL Azure.
CONTROL CONTROL SERVER
ВЫПОЛНЕНИЕ ЛЮБОГО ВНЕШНЕГО СКРИПТА
Область применения: SQL Server 2016 (13.x).
CONTROL CONTROL SERVER
ВЫПОЛНЕНИЕ ВНЕШНЕГО СКРИПТА
Область применения: SQL Server 2019 (15.x)
ВЫПОЛНИТЬ ЛЮБОЙ ВНЕШНИЙ СКРИПТ CONTROL SERVER
INSERT CONTROL CONTROL SERVER
Завершить подключение к базе данных
Область применения: База данных SQL Azure.
CONTROL ИЗМЕНЕНИЕ ЛЮБОГО СОЕДИНЕНИЯ
REFERENCES CONTROL CONTROL SERVER
SELECT CONTROL CONTROL SERVER
SHOWPLAN CONTROL ALTER TRACE
УВЕДОМЛЕНИЯ О ЗАПРОСЕ НА ПОДПИСКУ CONTROL CONTROL SERVER
TAKE OWNERSHIP CONTROL CONTROL SERVER
UNMASK CONTROL CONTROL SERVER
UPDATE CONTROL CONTROL SERVER
ПРОСМОТР ОПРЕДЕЛЕНИЯ КЛЮЧА ШИФРОВАНИЯ СТОЛБЦА CONTROL Просмотреть любое определение
ПРОСМОТР ОПРЕДЕЛЕНИЯ ГЛАВНОГО КЛЮЧА СТОЛБЦА CONTROL Просмотреть любое определение
ПРОСМОТР СОСТОЯНИЯ БАЗЫ ДАННЫХ CONTROL просмотр состояния сервера
VIEW DEFINITION CONTROL Просмотреть любое определение

Permissions

Объект, предоставляющий разрешение (или участник, указанный параметром AS), должен иметь либо само разрешение, выданное с помощью параметра GRANT OPTION, либо разрешение более высокого уровня, которое неявно включает предоставляемое.

При использовании параметра AS налагаются следующие дополнительные требования.

AS granting_principal Необходимо дополнительное разрешение
Database user Разрешение IMPERSONATE для пользователя, членство в предопределенной роли базы данных db_securityadmin, членство в предопределенной роли базы данных db_owner или членство в предопределенной роли сервера sysadmin.
пользователь базы данных, сопоставленный с именем входа Windows; Разрешение IMPERSONATE для пользователя, членство в предопределенной роли базы данных db_securityadmin, членство в предопределенной роли базы данных db_owner или членство в предопределенной роли сервера sysadmin.
Пользователь базы данных, сопоставленный группе Windows Членство в группе Windows, членство в предопределенной роли базы данных db_securityadmin, членство в предопределенной роли базы данных db_owner или членство в предопределенной роли сервера sysadmin.
пользователь базы данных, сопоставленный с сертификатом; Членство в предопределенной роли базы данных db_securityadmin, членство в предопределенной роли базы данных db_owner или членство в предопределенной роли сервера sysadmin.
пользователь базы данных, сопоставленный с асимметричным ключом; Членство в предопределенной роли базы данных db_securityadmin, членство в предопределенной роли базы данных db_owner или членство в предопределенной роли сервера sysadmin.
Пользователь базы данных, не сопоставленный ни с одним участником на уровне сервера Разрешение IMPERSONATE для пользователя, членство в предопределенной роли базы данных db_securityadmin, членство в предопределенной роли базы данных db_owner или членство в предопределенной роли сервера sysadmin.
Database role Разрешение ALTER на роль, членство в предопределенной роли базы данных db_securityadmin, предопределенной роли базы данных db_owner или предопределенной роли сервера sysadmin.
Application role Разрешение ALTER на роль, членство в предопределенной роли базы данных db_securityadmin, предопределенной роли базы данных db_owner или предопределенной роли сервера sysadmin.

Владельцы объектов могут предоставлять разрешения на объекты, которыми они владеют. Участники, имеющие разрешение CONTROL на защищаемый объект, могут предоставлять разрешение на этот защищаемый объект.

Участники, которым предоставлено разрешение CONTROL SERVER, такие как члены предопределенной роли сервера <legacyBold>sysadmin</legacyBold>, могут предоставлять любое разрешение на любой защищаемый объект сервера.

Examples

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

В следующем примере пользователю CREATE TABLE предоставляется разрешение AdventureWorks для базы данных MelanieK.

USE AdventureWorks;
GRANT CREATE TABLE TO MelanieK;
GO

B. Предоставление разрешения SHOWPLAN роли приложения

В следующем примере роли приложения SHOWPLAN предоставляется разрешение AdventureWorks2022 в базе данных AuditMonitor.

Область применения: SQL Server 2008 (10.0.x) и более поздних версий База данных SQL

USE AdventureWorks2022;
GRANT SHOWPLAN TO AuditMonitor;
GO

C. Предоставление разрешения CREATE VIEW с параметром GRANT OPTION

В следующем примере пользователю CREATE VIEW предоставляется разрешение AdventureWorks2022 в базе данных CarmineEs с правом предоставлять разрешение CREATE VIEW другим участникам.

USE AdventureWorks2022;
GRANT CREATE VIEW TO CarmineEs WITH GRANT OPTION;
GO

D. Предоставление разрешения CONTROL пользователю базы данных

В следующем примере пользователю CONTROL предоставляется разрешение AdventureWorks2022 для базы данных Sarah. Пользователь должен существовать в базе данных, которая должна быть настроена в качестве контекста.

USE AdventureWorks2022;
GRANT CONTROL ON DATABASE::AdventureWorks2022 TO Sarah;
GO

See Also