GRANT, предоставление разрешений на участника базы данных (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 базы данных AdventureWorks.
USE AdventureWorks;
GRANT CONTROL ON USER::Wanida TO RolandX;
GO
Б. Предоставление пользователю разрешения VIEW DEFINITION на роль с параметром GRANT OPTION
В следующем примере разрешение VIEW DEFINITION на роль SammamishParking базы данных AdventureWorks, с параметром GRANT OPTION, предоставляется пользователю этой базы данных, JinghaoLiu.
USE AdventureWorks;
GRANT VIEW DEFINITION ON ROLE::SammamishParking
TO JinghaoLiu WITH GRANT OPTION;
GO
В. Предоставление роли приложения разрешения IMPERSONATE на пользователя
В следующем примере разрешение IMPERSONATE на пользователя HamithaL предоставляется роли приложения AccountsPayable17 базы данных AdventureWorks.
USE AdventureWorks;
GRANT IMPERSONATE ON USER::HamithaL TO AccountsPayable17;
GO
См. также