GRANT, предоставление разрешений на базу данных (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечной точке аналитики платформы Аналитики Azure Synapse Analytics (PDW) в Microsoft Fabric Хранилище в Microsoft Fabric
Предоставляет разрешения на базу данных в SQL Server.
Соглашения о синтаксисе Transact-SQL
Синтаксис
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
Аргументы
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 — указывает пользователя базы данных, не сопоставленного с субъектом серверного уровня.
Замечания
Внимание
Сочетание разрешений ALTER и REFERENCE в некоторых случаях может позволить просматривать данные или выполнять несанкционированные функции. Пример. Пользователь с разрешением ALTER на таблицу и разрешением REFERENCE на функцию может создавать вычисляемый столбец на основе функции и в результате выполнять ее. В этом случае пользователю также требуется разрешение SELECT на вычисляемый столбец.
База данных — это защищаемый объект, хранящийся на сервере, который является родителем базы данных в иерархии разрешений. Наиболее специфичные и ограниченные разрешения, которые можно предоставлять в базе данных, перечислены в следующей таблице вместе с общими разрешениями, неявно содержащими их.
Разрешение в базе данных | Содержится в разрешении базы данных | Подразумевается в разрешении сервера |
---|---|---|
ADMINISTER DATABASE BULK OPERATIONS Область применения: База данных SQL. |
ПРОИЗВОДИТЕЛЬНОСТИ | CONTROL SERVER |
ИЗМЕНИТЬ | ПРОИЗВОДИТЕЛЬНОСТИ | ALTER ANY DATABASE |
ALTER ANY APPLICATION ROLE | ИЗМЕНИТЬ | CONTROL SERVER |
ALTER ANY ASSEMBLY | ИЗМЕНИТЬ | CONTROL SERVER |
ALTER ANY ASYMMETRIC KEY | ИЗМЕНИТЬ | CONTROL SERVER |
ALTER ANY CERTIFICATE | ИЗМЕНИТЬ | CONTROL SERVER |
ALTER ANY COLUMN ENCRYPTION KEY | ИЗМЕНИТЬ | CONTROL SERVER |
ALTER ANY COLUMN MASTER KEY DEFINITION | ИЗМЕНИТЬ | CONTROL SERVER |
ALTER ANY CONTRACT | ИЗМЕНИТЬ | CONTROL SERVER |
ALTER ANY DATABASE AUDIT | ИЗМЕНИТЬ | ALTER ANY SERVER AUDIT |
ALTER ANY DATABASE DDL TRIGGER | ИЗМЕНИТЬ | CONTROL SERVER |
ALTER ANY DATABASE EVENT NOTIFICATION | ИЗМЕНИТЬ | ALTER ANY EVENT NOTIFICATION |
ALTER ANY DATABASE EVENT SESSION Область применения: База данных SQL. |
ИЗМЕНИТЬ | ALTER ANY EVENT SESSION |
ALTER ANY DATABASE SCOPED CONFIGURATION Область применения: SQL Server 2016 (13.x) и более поздних версий База данных SQL. |
ПРОИЗВОДИТЕЛЬНОСТИ | CONTROL SERVER |
ALTER ANY DATASPACE | ИЗМЕНИТЬ | CONTROL SERVER |
ALTER ANY EXTERNAL DATA SOURCE | ИЗМЕНИТЬ | CONTROL SERVER |
ALTER ANY EXTERNAL FILE FORMAT | ИЗМЕНИТЬ | CONTROL SERVER |
ALTER ANY EXTERNAL LIBRARY Область применения: SQL Server 2017 (14.x). |
ПРОИЗВОДИТЕЛЬНОСТИ | CONTROL SERVER |
ALTER ANY FULLTEXT CATALOG | ИЗМЕНИТЬ | CONTROL SERVER |
ALTER ANY MASK | ПРОИЗВОДИТЕЛЬНОСТИ | CONTROL SERVER |
ALTER ANY MESSAGE TYPE | ИЗМЕНИТЬ | CONTROL SERVER |
ALTER ANY REMOTE SERVICE BINDING | ИЗМЕНИТЬ | CONTROL SERVER |
ALTER ANY ROLE | ИЗМЕНИТЬ | CONTROL SERVER |
ALTER ANY ROUTE | ИЗМЕНИТЬ | CONTROL SERVER |
ALTER ANY SCHEMA | ИЗМЕНИТЬ | CONTROL SERVER |
ALTER ANY SECURITY POLICY Область применения: База данных SQL Azure. |
ПРОИЗВОДИТЕЛЬНОСТИ | CONTROL SERVER |
ALTER ANY SENSITIVITY CLASSIFICATION Область применения: SQL Server (SQL Server 2019 и более поздних версий) и База данных SQL Azure. |
ПРОИЗВОДИТЕЛЬНОСТИ | CONTROL SERVER |
ALTER ANY SERVICE | ИЗМЕНИТЬ | CONTROL SERVER |
ALTER ANY SYMMETRIC KEY | ИЗМЕНИТЬ | CONTROL SERVER |
ИЗМЕНИТЬ ПОЛЬЗОВАТЕЛЯ | ИЗМЕНИТЬ | CONTROL SERVER |
AUTHENTICATE | ПРОИЗВОДИТЕЛЬНОСТИ | AUTHENTICATE SERVER |
BACKUP DATABASE | ПРОИЗВОДИТЕЛЬНОСТИ | CONTROL SERVER |
BACKUP LOG | ПРОИЗВОДИТЕЛЬНОСТИ | CONTROL SERVER |
CHECKPOINT | ПРОИЗВОДИТЕЛЬНОСТИ | CONTROL SERVER |
ПОДКЛЮЧЕНИЕ | CONNECT REPLICATION | CONTROL SERVER |
CONNECT REPLICATION | ПРОИЗВОДИТЕЛЬНОСТИ | CONTROL SERVER |
ПРОИЗВОДИТЕЛЬНОСТИ | ПРОИЗВОДИТЕЛЬНОСТИ | CONTROL SERVER |
CREATE AGGREGATE | ИЗМЕНИТЬ | CONTROL SERVER |
СОЗДАНИЕ ЛЮБОЙ ВНЕШНЕЙ БИБЛИОТЕКИ Область применения: SQL Server 2017 (14.x). |
ПРОИЗВОДИТЕЛЬНОСТИ | CONTROL SERVER |
CREATE ASSEMBLY | ALTER ANY ASSEMBLY | CONTROL SERVER |
CREATE ASYMMETRIC KEY | ALTER ANY ASYMMETRIC KEY | CONTROL SERVER |
CREATE CERTIFICATE | ALTER ANY CERTIFICATE | CONTROL SERVER |
CREATE CONTRACT | ALTER ANY CONTRACT | CONTROL SERVER |
СОЗДАТЬ БАЗУ ДАННЫХ | ПРОИЗВОДИТЕЛЬНОСТИ | CREATE ANY DATABASE |
CREATE DATABASE DDL EVENT NOTIFICATION | ALTER ANY DATABASE EVENT NOTIFICATION | CREATE DDL EVENT NOTIFICATION |
CREATE DEFAULT | ИЗМЕНИТЬ | CONTROL SERVER |
CREATE FULLTEXT CATALOG | ALTER ANY FULLTEXT CATALOG | CONTROL SERVER |
CREATE FUNCTION | ИЗМЕНИТЬ | CONTROL SERVER |
CREATE MESSAGE TYPE | ALTER ANY MESSAGE TYPE | CONTROL SERVER |
СОЗДАТЬ ПРОЦЕДУРУ | ИЗМЕНИТЬ | CONTROL SERVER |
CREATE QUEUE | ИЗМЕНИТЬ | CONTROL SERVER |
CREATE REMOTE SERVICE BINDING | ALTER ANY REMOTE SERVICE BINDING | CONTROL SERVER |
CREATE ROLE | ALTER ANY ROLE | CONTROL SERVER |
CREATE ROUTE | ALTER ANY ROUTE | CONTROL SERVER |
CREATE RULE | ИЗМЕНИТЬ | CONTROL SERVER |
CREATE SCHEMA | ALTER ANY SCHEMA | CONTROL SERVER |
CREATE SERVICE | ALTER ANY SERVICE | CONTROL SERVER |
CREATE SYMMETRIC KEY | ALTER ANY SYMMETRIC KEY | CONTROL SERVER |
CREATE SYNONYM | ИЗМЕНИТЬ | CONTROL SERVER |
СОЗДАТЬ ТАБЛИЦУ | ИЗМЕНИТЬ | CONTROL SERVER |
СОЗДАТЬ ТИП | ИЗМЕНИТЬ | CONTROL SERVER |
СОЗДАТЬ ПРЕДСТАВЛЕНИЕ | ИЗМЕНИТЬ | CONTROL SERVER |
CREATE XML SCHEMA COLLECTION | ИЗМЕНИТЬ | CONTROL SERVER |
DELETE | ПРОИЗВОДИТЕЛЬНОСТИ | CONTROL SERVER |
Выполнение | ПРОИЗВОДИТЕЛЬНОСТИ | CONTROL SERVER |
ВЫПОЛНЕНИЕ ЛЮБОЙ ВНЕШНЕЙ КОНЕЧНОЙ ТОЧКИ Область применения: База данных SQL Azure. |
ПРОИЗВОДИТЕЛЬНОСТИ | CONTROL SERVER |
ВЫПОЛНЕНИЕ ЛЮБОГО ВНЕШНЕГО СКРИПТА Область применения: SQL Server 2016 (13.x). |
ПРОИЗВОДИТЕЛЬНОСТИ | CONTROL SERVER |
ВЫПОЛНЕНИЕ ВНЕШНЕГО СКРИПТА Область применения: SQL Server 2019 (15.x) |
EXECUTE ANY EXTERNAL SCRIPT | CONTROL SERVER |
ВСТАВИТЬ | ПРОИЗВОДИТЕЛЬНОСТИ | CONTROL SERVER |
KILL DATABASE CONNECTION Область применения: База данных SQL Azure. |
ПРОИЗВОДИТЕЛЬНОСТИ | ALTER ANY CONNECTION |
ССЫЛКИ | ПРОИЗВОДИТЕЛЬНОСТИ | CONTROL SERVER |
SELECT | ПРОИЗВОДИТЕЛЬНОСТИ | CONTROL SERVER |
SHOWPLAN | ПРОИЗВОДИТЕЛЬНОСТИ | ALTER TRACE |
SUBSCRIBE QUERY NOTIFICATIONS | ПРОИЗВОДИТЕЛЬНОСТИ | CONTROL SERVER |
TAKE OWNERSHIP | ПРОИЗВОДИТЕЛЬНОСТИ | CONTROL SERVER |
UNMASK | ПРОИЗВОДИТЕЛЬНОСТИ | CONTROL SERVER |
UPDATE | ПРОИЗВОДИТЕЛЬНОСТИ | CONTROL SERVER |
VIEW ANY COLUMN ENCRYPTION KEY DEFINITION | ПРОИЗВОДИТЕЛЬНОСТИ | VIEW ANY DEFINITION |
VIEW ANY COLUMN MASTER KEY DEFINITION | ПРОИЗВОДИТЕЛЬНОСТИ | VIEW ANY DEFINITION |
ПРОСМОТР СОСТОЯНИЯ БАЗЫ ДАННЫХ | ПРОИЗВОДИТЕЛЬНОСТИ | VIEW SERVER STATE |
VIEW DEFINITION | ПРОИЗВОДИТЕЛЬНОСТИ | VIEW ANY DEFINITION |
Разрешения
Объект, предоставляющий разрешение (или участник, указанный параметром AS), должен иметь либо само разрешение, выданное с помощью параметра GRANT OPTION, либо разрешение более высокого уровня, которое неявно включает предоставляемое.
При использовании параметра AS налагаются следующие дополнительные требования.
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>, могут предоставлять любое разрешение на любой защищаемый объект сервера.
Примеры
А. Предоставление разрешения на создание таблиц
В следующем примере пользователю MelanieK
предоставляется разрешение CREATE TABLE
для базы данных AdventureWorks
.
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 пользователю базы данных
В следующем примере пользователю Sarah
предоставляется разрешение CONTROL
для базы данных AdventureWorks2022
. Пользователь должен существовать в базе данных, которая должна быть настроена в качестве контекста.
USE AdventureWorks2022;
GRANT CONTROL ON DATABASE::AdventureWorks2022 TO Sarah;
GO