Поделиться через


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 ServerSylvester1 предоставляется разрешение на выбор представления, отображающего учетные записи SQL Server. Затем предоставляется дополнительное разрешение на просмотр метаданных имен входа SQL Server, принадлежащих другим пользователям.

USE AdventureWorks2008R2;
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