DENY, запрет разрешений на системные объекты (Transact-SQL)
Запрещает разрешения для системных объектов, например хранимых процедур, расширенных хранимых процедур, функций и представлений.
Синтаксические обозначения в Transact-SQL
Синтаксис
DENY { SELECT | EXECUTE } ON [ sys.]system_object TO principal
Аргументы
[ sys.]
Квалификатор sys требуется только при ссылках на представления каталога и динамические административные представления.system_object
Указывает объект, для которого запрещается разрешение.principal
Указывает участника, чье разрешение отзывается.
Замечания
Эта инструкция может быть использована, чтобы запретить разрешения для определенных хранимых процедур, расширенных хранимых процедур, функций с табличным значением, скалярных функций, представлений, представлений каталога, представлений совместимости, представлений INFORMATION_SCHEMA, динамических административных представлений и системных таблиц, установленных SQL Server. Каждый из этих системных объектов существует в виде уникальной записи в базе данных ресурсов (mssqlsystemresource), которая доступна только для чтения. Ссылка на объект представлена в виде записи в схеме sys каждой базы данных.
Разрешение имен по умолчанию устраняет проблему неправомочных имен процедур в базе данных ресурсов. Следовательно, квалификатор sys требуется только при указании представления каталога и динамические административные представления.
Внимание! |
---|
Запрет разрешений в системных объектах вызовет ошибки в зависящих от них приложениях. В Среда SQL Server Management Studio используются представления каталогов, и нормальная работа может быть нарушена, если изменить разрешения по умолчанию для представлений каталогов. |
Запрещение разрешений для триггеров и для столбцов системных объектов не поддерживается.
При обновлении 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.
Примеры
В следующем примере роли public запрещается разрешение EXECUTE для расширенной процедуры xp_cmdshell.
DENY EXECUTE ON sys.xp_cmdshell TO public;
GO
См. также
Справочник
Синтаксические обозначения в Transact-SQL (Transact-SQL)
sys.database_permissions (Transact-SQL)
GRANT, предоставление разрешения на системный объект (Transact-SQL)
REVOKE, отмена разрешения на системные объекты (Transact-SQL)