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, LOG, DATABASE, BACKUP, CREATE DEFAULT, , CREATE FUNCTIONCREATE PROCEDURE, , и CREATE RULE. CREATE TABLECREATE 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 МАССОВЫХ ОПЕРАЦИЙ
Область применения: База данных SQL.
CONTROL сервер управления
ALTER CONTROL ИЗМЕНЕНИЕ ЛЮБОГО DATABASE
ИЗМЕНЕНИЕ ЛЮБОГО APPLICATION ROLE ALTER сервер управления
ИЗМЕНЕНИЕ ЛЮБОГО ASSEMBLY ALTER сервер управления
ИЗМЕНЕНИЕ ЛЮБОГО ASYMMETRIC KEY ALTER сервер управления
ИЗМЕНЕНИЕ ЛЮБОГО CERTIFICATE ALTER сервер управления
ИЗМЕНЕНИЕ ЛЮБОГО COLUMN ENCRYPTION KEY ALTER сервер управления
ИЗМЕНИТЬ ЛЮБОЕ COLUMN MASTER KEY ОПРЕДЕЛЕНИЕ ALTER сервер управления
ИЗМЕНЕНИЕ ЛЮБОГО CONTRACT ALTER сервер управления
ИЗМЕНИТЬ ЛЮБОЙ DATABASE АУДИТ ALTER ИЗМЕНЕНИЕ ЛЮБОГО SERVER AUDIT
ИЗМЕНИТЬ ЛЮБОЙ DATABASE DDL TRIGGER ALTER сервер управления
ИЗМЕНИТЕ ЛЮБЫЕ DATABASEEVENT NOTIFICATION ALTER ИЗМЕНЕНИЕ ЛЮБОГО EVENT NOTIFICATION
ИЗМЕНИТЕ ЛЮБЫЕ DATABASEEVENT SESSION
Область применения: База данных SQL.
ALTER ИЗМЕНЕНИЕ ЛЮБОГО EVENT SESSION
ИЗМЕНЕНИЕ ЛЮБОГО DATABASE SCOPED CONFIGURATION
Область применения: SQL Server 2016 (13.x) и более поздних версий База данных SQL.
CONTROL сервер управления
ИЗМЕНИТЬ ЛЮБОЕ ПРОСТРАНСТВО ДАННЫХ ALTER сервер управления
ИЗМЕНЕНИЕ ЛЮБОГО EXTERNAL DATA SOURCE ALTER сервер управления
ИЗМЕНЕНИЕ ЛЮБОГО EXTERNAL FILE FORMAT ALTER сервер управления
ИЗМЕНЕНИЕ ЛЮБОГО EXTERNAL LIBRARY
Область применения: SQL Server 2017 (14.x).
CONTROL сервер управления
ИЗМЕНЕНИЕ ЛЮБОГО FULLTEXT CATALOG ALTER сервер управления
ИЗМЕНИТЬ ЛЮБУЮ МАСКУ CONTROL сервер управления
ИЗМЕНЕНИЕ ЛЮБОГО MESSAGE TYPE ALTER сервер управления
ИЗМЕНЕНИЕ ЛЮБОГО REMOTE SERVICE BINDING ALTER сервер управления
ИЗМЕНЕНИЕ ЛЮБОГО ROLE ALTER сервер управления
ИЗМЕНЕНИЕ ЛЮБОГО ROUTE ALTER сервер управления
ИЗМЕНЕНИЕ ЛЮБОГО SCHEMA ALTER сервер управления
ИЗМЕНЕНИЕ ЛЮБОГО SECURITY POLICY
Область применения: База данных SQL Azure.
CONTROL сервер управления
ИЗМЕНЕНИЕ ЛЮБОГО SENSITIVITY CLASSIFICATION
Область применения: SQL Server (SQL Server 2019 и более поздних версий) и База данных SQL Azure.
CONTROL сервер управления
ИЗМЕНЕНИЕ ЛЮБОГО SERVICE ALTER сервер управления
ИЗМЕНЕНИЕ ЛЮБОГО SYMMETRIC KEY ALTER сервер управления
ИЗМЕНЕНИЕ ЛЮБОГО USER ALTER сервер управления
AUTHENTICATE CONTROL ПРОВЕРКА ПОДЛИННОСТИ СЕРВЕРА
BACKUP DATABASE CONTROL сервер управления
BACKUP ЖУРНАЛА CONTROL сервер управления
CHECKPOINT CONTROL сервер управления
CONNECT РЕПЛИКАЦИЯ CONNECT сервер управления
РЕПЛИКАЦИЯ CONNECT CONTROL сервер управления
CONTROL CONTROL сервер управления
CREATE AGGREGATE ALTER сервер управления
СОЗДАНИЕ ЛЮБОГО EXTERNAL LIBRARY
Область применения: SQL Server 2017 (14.x).
CONTROL сервер управления
CREATE ASSEMBLY ИЗМЕНЕНИЕ ЛЮБОГО ASSEMBLY сервер управления
CREATE ASYMMETRIC KEY ИЗМЕНЕНИЕ ЛЮБОГО ASYMMETRIC KEY сервер управления
CREATE CERTIFICATE ИЗМЕНЕНИЕ ЛЮБОГО CERTIFICATE сервер управления
CREATE CONTRACT ИЗМЕНЕНИЕ ЛЮБОГО CONTRACT сервер управления
CREATE DATABASE CONTROL СОЗДАНИЕ ЛЮБОГО DATABASE
CREATE DATABASE DDL EVENT NOTIFICATION ИЗМЕНИТЕ ЛЮБЫЕ DATABASEEVENT NOTIFICATION СОЗДАТЬ DDL EVENT NOTIFICATION
CREATE DEFAULT ALTER сервер управления
CREATE FULLTEXT CATALOG ИЗМЕНЕНИЕ ЛЮБОГО FULLTEXT CATALOG сервер управления
CREATE FUNCTION ALTER сервер управления
CREATE MESSAGE TYPE ИЗМЕНЕНИЕ ЛЮБОГО MESSAGE TYPE сервер управления
CREATE PROCEDURE ALTER сервер управления
CREATE QUEUE ALTER сервер управления
CREATE REMOTE SERVICE BINDING ИЗМЕНЕНИЕ ЛЮБОГО REMOTE SERVICE BINDING сервер управления
CREATE ROLE ИЗМЕНЕНИЕ ЛЮБОГО ROLE сервер управления
CREATE ROUTE ИЗМЕНЕНИЕ ЛЮБОГО ROUTE сервер управления
CREATE RULE ALTER сервер управления
CREATE SCHEMA ИЗМЕНЕНИЕ ЛЮБОГО SCHEMA сервер управления
CREATE SERVICE ИЗМЕНЕНИЕ ЛЮБОГО SERVICE сервер управления
CREATE SYMMETRIC KEY ИЗМЕНЕНИЕ ЛЮБОГО SYMMETRIC KEY сервер управления
CREATE SYNONYM ALTER сервер управления
CREATE TABLE ALTER сервер управления
CREATE TYPE ALTER сервер управления
CREATE VIEW ALTER сервер управления
CREATE XML SCHEMA COLLECTION ALTER сервер управления
DELETE CONTROL сервер управления
EXECUTE CONTROL сервер управления
ВЫПОЛНЕНИЕ ЛЮБЫХ ВНЕШНИХ ENDPOINT
Область применения: База данных SQL Azure.
CONTROL сервер управления
ВЫПОЛНЕНИЕ ЛЮБОГО ВНЕШНЕГО СКРИПТА
Область применения: SQL Server 2016 (13.x).
CONTROL сервер управления
ВЫПОЛНЕНИЕ ВНЕШНЕГО СКРИПТА
Область применения: SQL Server 2019 (15.x)
ВЫПОЛНИТЬ ЛЮБОЙ ВНЕШНИЙ СКРИПТ сервер управления
INSERT CONTROL сервер управления
РАЗОРВАТЬ DATABASE СОЕДИНЕНИЕ
Область применения: База данных SQL Azure.
CONTROL ИЗМЕНЕНИЕ ЛЮБОГО СОЕДИНЕНИЯ
REFERENCES CONTROL сервер управления
SELECT CONTROL сервер управления
SHOWPLAN CONTROL ALTER TRACE (изменение трассировки)
УВЕДОМЛЕНИЯ О ЗАПРОСЕ НА ПОДПИСКУ CONTROL сервер управления
ВОЗЬМИТЕ ОТВЕТСТВЕННОСТЬ CONTROL сервер управления
UNMASK CONTROL сервер управления
UPDATE CONTROL сервер управления
VIEW ЛЮБОЕ COLUMN ENCRYPTION KEY ОПРЕДЕЛЕНИЕ CONTROL VIEW ЛЮБОЕ ОПРЕДЕЛЕНИЕ
VIEW ЛЮБОЕ COLUMN MASTER KEY ОПРЕДЕЛЕНИЕ CONTROL VIEW ЛЮБОЕ ОПРЕДЕЛЕНИЕ
VIEW DATABASE СОСТОЯНИЕ ПРОИЗВОДИТЕЛЬНОСТИ

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

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

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

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

Permissions

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

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

КАК granting_principal Необходимо дополнительное разрешение
пользователь базы данных; Разрешение 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.
роль базы данных; Разрешение ALTER на роль, членство в предопределенной роли базы данных db_securityadmin, предопределенной роли базы данных db_owner или предопределенной роли сервера sysadmin.
Роль приложения Разрешение 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 предоставляется разрешение AdventureWorks2025 в базе данных AuditMonitor.

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

USE AdventureWorks2022;
GRANT SHOWPLAN TO AuditMonitor;
GO

C. Предоставление CREATE VIEW с GRANT помощью ОПЦИИ

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

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

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

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

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