DENY, запрет разрешений на системные объекты (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure базе данных SQL в Microsoft Fabric
Запрещает разрешения для системных объектов, например хранимых процедур, расширенных хранимых процедур, функций и представлений.
Соглашения о синтаксисе 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.
Примеры
В следующем примере запрещается разрешение EXECUTE
на xp_cmdshell
для public
.
DENY EXECUTE ON sys.xp_cmdshell TO public;
GO
См. также
Соглашения о синтаксисе Transact-SQL
sys.database_permissions (Transact-SQL)
Grant System Object Permissions (Transact-SQL)
REVOKE System Object Permissions (Transact-SQL)