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

Предоставляет разрешения на доступ к таким системным объектам как хранимые процедуры, расширенные хранимые процедуры, функции и представления.

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

Синтаксис

GRANT { SELECT | EXECUTE } ON [ sys.]system_object TO principal 

Аргументы

  • [ sys.] .
    Квалификатор sys обязателен только при обращении к представлениям каталогов и к динамическим административным представлениям.

  • system_object
    Задает объект, для которого предоставляется разрешение.

  • principal
    Указывает участника, которому предоставляется разрешение.

Замечания

Данная инструкция может быть использована для предоставления разрешений на доступ к определенным хранимым процедурам, расширенным хранимым процедурам, функциям с табличным значением, скалярным функциям, представлениям, представлениям каталогов и совместимостей, представлениям INFORMATION_SCHEMA, динамическим административным представлениям, а также системным таблицам, установленным SQL Server. Каждый из этих системных объектов существует в виде уникальной записи в базе данных ресурсов сервера (mssqlsystemresource). которая доступна только для чтения. Ссылка на объект представлена в виде записи в схеме sys для каждой базы данных. Разрешение на выполнение или выбор системного объекта может быть предоставлено, запрещено или отозвано.

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

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

Разрешение на доступ к триггерам и столбцам системных объектов не предоставляется.

При обновлении SQL Server разрешения на доступ к системным объектам сохраняются.

Системные объекты отображаются в представлении каталога sys.system_objects. Разрешения на доступ к системным объектам отображаются в представлении каталога sys.database_permissions в базе данных master.

В результате выполнения следующего запроса извлекаются данные о разрешениях на доступ к системным объектам:

SELECT * FROM master.sys.database_permissions AS dp 
    JOIN sys.system_objects AS so
    ON dp.major_id = so.object_id
    WHERE dp.class = 1 AND so.parent_object_id = 0 ;
GO

Разрешения

Требуются разрешения CONTROL SERVER.

Примеры

А.Предоставление разрешения SELECT на представление

В ходе выполнения следующего примера имени входа SQL Server Sylvester1 предоставляется разрешение на выбор представления, отображающего учетные записи SQL Server. Затем предоставляется дополнительное разрешение на просмотр метаданных имен входа SQL Server, принадлежащих другим пользователям.

USE AdventureWorks2012;
GRANT SELECT ON sys.sql_logins TO Sylvester1;
GRANT VIEW SERVER STATE to Sylvester1;
GO

Б.Предоставление разрешения EXECUTE на расширенную хранимую процедуру

В следующем примере имени входа Sylvester1 предоставляется разрешение EXECUTE на процедуру xp_readmail.

GRANT EXECUTE ON xp_readmail TO Sylvester1;
GO

См. также

Справочник

sys.system_objects (Transact-SQL)

sys.database_permissions (Transact-SQL)

REVOKE, отмена разрешения на системные объекты (Transact-SQL)

DENY, запрет разрешений на системные объекты (Transact-SQL)