GRANT, предоставление разрешений на объект (Transact-SQL)
Предоставляет разрешения на таблицу, представление, функцию с табличным значением, хранимую процедуру, расширенную хранимую процедуру, скалярную функцию, агрегатную функцию, очередь обслуживания или синоним.
Синтаксис
Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.
Аргументы
permission Указывает разрешение, которое может быть предоставлено на содержащийся в схеме объект. Список разрешений см. в подразделе "Примечания" далее в этом разделе.
ALL Предоставление ALL не включает все возможные разрешения, оно эквивалентно предоставлению всех разрешений ANSI-92, применимых к указанному объекту. Значение ALL различается для разных типов объектов
- Разрешения на скалярные функции: EXECUTE, REFERENCES.
- Разрешения на функции с табличным значением: DELETE, INSERT, REFERENCES, SELECT, UPDATE.
- Разрешения на хранимые процедуры: EXECUTE.
- Разрешения на таблицы: DELETE, INSERT, REFERENCES, SELECT, UPDATE.
- Разрешения на представления: DELETE, INSERT, REFERENCES, SELECT, UPDATE.
PRIVILEGES Включено для обеспечения совместимости с ANSI-92. Не изменяет работу ALL.
column Указывает имя столбца в таблице, представление или функции с табличным значением, на которых предоставляется разрешение. Указание круглых скобок ( ) обязательно. На столбец могут быть предоставлены только разрешения SELECT, REFERENCES и UPDATE. Аргумент column может быть указан в предложении PERMISSIONS или после имени защищаемого объекта.
Запрет (DENY) уровня таблицы имеет меньший приоритет, чем разрешение (GRANT) уровня столбца. Такая несогласованность в иерархии разрешений сохранена в целях обратной совместимости.
ON [ OBJECT :: ] [ schema_name ] . object_name Указывает объект, на который предоставляется разрешение. Фраза OBJECT необязательна, если указан аргумент schema_name. Если же она указана, указание квалификатора области (::) обязательно. Если не указан аргумент schema_name, подразумевается схема по умолчанию. Если указан аргумент schema_name, обязательно указание квалификатора области схемы (.).
TO <database_principal> Участник, которому предоставляется разрешение.
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 Указывает пользователя базы данных, не сопоставленного с субъектом серверного уровня.
Remarks
Сочетание разрешений ALTER и REFERENCE в некоторых случаях может позволить просматривать данные или выполнять несанкционированные функции. Пример: Пользователь с разрешением ALTER на таблицу и разрешением REFERENCE на функцию может создавать вычисляемый столбец на основе функции и в результате — выполнять ее. В этом случае пользователю также требуется разрешение SELECT на вычисляемый столбец.
Сведения об объектах доступны через различные представления каталога. Дополнительные сведения см. в разделе Представления каталога объектов (Transact-SQL).
Объект является защищаемым на уровне схемы. Он содержится в схеме, которая является его родителем в иерархии разрешений. В следующей таблице перечислен ряд отдельных разрешений, которые могут быть предоставлены на объект, а также наиболее общие разрешения, которые неявно их подразумевают.
Разрешение объекта Содержится в разрешении объекта Содержится в разрешении схемы ALTER CONTROL ALTER CONTROL CONTROL CONTROL DELETE CONTROL DELETE EXECUTE CONTROL EXECUTE INSERT CONTROL INSERT RECEIVE CONTROL CONTROL REFERENCES CONTROL REFERENCES SELECT RECEIVE SELECT TAKE OWNERSHIP CONTROL CONTROL UPDATE CONTROL UPDATE VIEW CHANGE TRACKING CONTROL VIEW CHANGE TRACKING VIEW DEFINITION CONTROL VIEW DEFINITION
Разрешения
Объект, предоставляющий разрешение (или участник, указанный параметром AS), должен иметь либо само разрешение, выданное с помощью параметра GRANT OPTION, либо разрешение более высокого уровня, которое неявно включает предоставляемое.
При использовании параметра AS налагаются следующие дополнительные требования.
AS Необходимо дополнительное разрешение пользователь базы данных; Разрешение 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.
Примеры
A. Предоставление разрешения SELECT на таблицуВ следующем примере предоставляется разрешение SELECT пользователю RosaQdM на таблицу Person.Address в базе данных AdventureWorks2012 .
Б. Предоставление разрешения EXECUTE на хранимую процедуруВ следующем примере предоставляется разрешение EXECUTE на хранимую процедуру HumanResources.uspUpdateEmployeeHireInfo роли приложения Recruiting11 .
В. Предоставление разрешения REFERENCES на представление с параметром GRANT OPTIONВ следующем примере предоставляется разрешение REFERENCES на столбец BusinessEntityID в представлении HumanResources.vEmployee пользователю Wanida с параметром GRANT OPTION .
Г. Предоставление разрешения SELECT на таблицу без использования фразы OBJECTВ следующем примере предоставляется разрешение SELECT пользователю RosaQdM на таблицу Person.Address в базе данных AdventureWorks2012 .
Д. Предоставление учетной записи домена разрешения SELECT на таблицуВ следующем примере предоставляется разрешение SELECT пользователю AdventureWorks2012\RosaQdM на таблицу Person.Address в базе данных AdventureWorks2012 .
Е. Предоставление роли разрешения EXECUTE на процедуруВ следующем примере создается роль, а затем ей предоставляется разрешение EXECUTE на процедуру uspGetBillOfMaterials в базе данных AdventureWorks2012 .