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

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

Значок ссылки на раздел Соглашения о синтаксисе в Transact-SQL

Синтаксис

GRANT permission [ ,...n ]  
    ON 
    {  [ USER :: database_user ]
              | [ ROLE :: database_role ]
       | [ APPLICATION ROLE :: application_role ]
    }
    TO <database_principal> [ ,...n ]
    [ WITH GRANT OPTION ]
        [ AS <database_principal> ]

<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
    Указывает разрешение, которое может быть предоставлено участнику базы данных. Список разрешений см. в подразделе «Примечания» далее в этом разделе.

  • USER ::database_user
    Указывает класс и имя пользователя, которому предоставляется разрешение. Требуется квалификатор области (::).

  • ROLE ::database_role
    Указывает класс и имя роли, которой предоставляется разрешение. Требуется квалификатор области (::).

  • APPLICATION ROLE ::application_role
    Указывает класс и имя роли приложения, которой предоставляется разрешение. Требуется квалификатор области (::).

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

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

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

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

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

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

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

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

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

  • Database_user_with_no_login
    Задает пользователя базы данных без соответствующего участника уровня сервера.

Замечания

Данные об участниках базы данных отображаются в представлении каталога sys.server_principals. Данные о разрешениях уровня базы данных отображаются в представлении каталога sys.database_permissions.

Разрешения пользователя базы данных

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

Разрешение пользователя базы данных

Содержится в разрешении пользователя базы данных

Содержится в разрешении базы данных

CONTROL

CONTROL

CONTROL

IMPERSONATE

CONTROL

CONTROL

ALTER

CONTROL

ALTER ANY USER

VIEW DEFINITION

CONTROL

VIEW DEFINITION

Разрешения роли базы данных

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

Разрешение роли базы данных

Содержится в разрешении роли базы данных

Содержится в разрешении базы данных

CONTROL

CONTROL

CONTROL

TAKE OWNERSHIP

CONTROL

CONTROL

ALTER

CONTROL

ALTER ANY ROLE

VIEW DEFINITION

CONTROL

VIEW DEFINITION

Разрешения роли приложения

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

Разрешение роли приложения

Содержится в разрешении роли приложения

Содержится в разрешении базы данных

CONTROL

CONTROL

CONTROL

ALTER

CONTROL

ALTER ANY APPLICATION ROLE

VIEW DEFINITION

CONTROL

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

Примеры

А.Предоставление разрешения CONTROL на пользователя другому пользователю

В следующем примере пользователю RolandX предоставляется разрешение CONTROL на пользователя Wanida базы данных AdventureWorks2012.

USE AdventureWorks2012;
GRANT CONTROL ON USER::Wanida TO RolandX;
GO

Б.Предоставление пользователю разрешения VIEW DEFINITION на роль с параметром GRANT OPTION

В следующем примере разрешение VIEW DEFINITION на роль SammamishParking базы данных AdventureWorks2012, с параметром GRANT OPTION, предоставляется пользователю этой базы данных, JinghaoLiu.

USE AdventureWorks2012;
GRANT VIEW DEFINITION ON ROLE::SammamishParking 
    TO JinghaoLiu WITH GRANT OPTION;
GO

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

В следующем примере разрешение IMPERSONATE на пользователя HamithaL предоставляется роли приложения AccountsPayable17 базы данных AdventureWorks2012.

USE AdventureWorks2012;
GRANT IMPERSONATE ON USER::HamithaL TO AccountsPayable17;
GO  

См. также

Справочник

DENY, запрет разрешений на участника базы данных (Transact-SQL)

REVOKE, отмена разрешений на участника базы данных (Transact-SQL)

sys.database_principals (Transact-SQL)

sys.database_permissions (Transact-SQL)

CREATE USER (Transact-SQL)

CREATE APPLICATION ROLE (Transact-SQL)

CREATE ROLE (Transact-SQL)

Инструкция GRANT (Transact-SQL)

Основные понятия

Разрешения (компонент Database Engine)

Участники (компонент Database Engine)