DENY (Transact-SQL)
Изменения: 12 декабря 2006 г.
Запрещает разрешение для участника. Предотвращает наследование разрешения участником через его членство в группе или роли.
Синтаксис
Simplified syntax for DENY
DENY { ALL [ PRIVILEGES ] }
| permission [ ( column [ ,...n ] ) ] [ ,...n ]
[ ON [ class :: ] securable ] TO principal [ ,...n ]
[ CASCADE] [ AS principal ]
Аргументы
ALL
С помощью этого параметра запрещаются не все возможные разрешения. Его использование эквивалентно запрету следующих разрешений.- Если защищаемым объектом является база данных, аргумент «ALL» подразумевает разрешения BACKUP DATABASE, BACKUP LOG, CREATE DATABASE, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TABLE и CREATE VIEW.
- Если защищаемым объектом является скалярная функция, аргумент «ALL» подразумевает разрешения EXECUTE и REFERENCES.
- Если защищаемым объектом является функция, возвращающая табличное значение, аргумент «ALL» подразумевает разрешения DELETE, INSERT, REFERENCES, SELECT и UPDATE.
- Если защищаемым объектом является хранимая процедура, аргумент «ALL» подразумевает разрешение EXECUTE.
- Если защищаемым объектом является таблица, аргумент «ALL» подразумевает разрешения DELETE, INSERT, REFERENCES, SELECT и UPDATE.
- Если защищаемым объектом является представление, аргумент «ALL» подразумевает разрешения DELETE, INSERT, REFERENCES, SELECT и UPDATE.
- PRIVILEGES
Включен для соответствия стандарту SQL-92. Не изменяет поведение аргумента ALL.
- permission
Имя разрешения. Допустимые сопоставления разрешений защищаемых объектов описаны в разделах, перечисленных ниже.
- column
Указывает имя столбца в таблице, на который запрещаются разрешения. Необходимы скобки «()».
- class
Указывает класс защищаемого объекта, на который запрещается разрешение. Требуется квалификатор области «::».
- securable
Указывает защищаемый объект, на который запрещается разрешение.
- TO principal
Имя участника. Участники, у которых может запрещаться разрешение на защищаемый объект, в зависимости от самого защищаемого объекта. Допустимые сочетания приведены в указанных ниже разделах по конкретным защищаемым объектам.
- CASCADE
Обозначает, что разрешение запрещается для указанного участника и всех других участников, которым этот участник предоставил разрешение. Требуется, если участник имеет разрешение с параметром GRANT OPTION.
- AS principal
Указывает участника, от которого участник, выполняющий данный запрос, наследует право на запрет разрешения.
Замечания
Полный синтаксис инструкции DENY достаточно сложен. Вышеприведенная схема синтаксиса инструкции упрощена, чтобы обратить внимание на структуру. Полный синтаксис запрета разрешений на конкретные защищаемые объекты описан в разделах, перечисленных ниже.
Если при запрете разрешений участнику, которому эти разрешения были предоставлены с параметром GRANT OPTION, не указана инструкция CASCADE, то инструкция DENY будет завершена неуспешно.
Разрешения уровня столбца имеют преимущество перед разрешениями объекта. Например, если разрешение deny применяется к такому базовому объекту, как таблица, а затем разрешение grant применяется к одному из столбцов базового объекта, то обладатель этого разрешения будет обладать доступом к столбцу, вместо запрета на доступ к базовому объекту. Тем не менее, чтобы гарантировать наличие разрешений уровня столбца, эти разрешения необходимо применить после разрешений для базового объекта.
Примечание. |
---|
В SQL Server 2005 эта несогласованность в иерархии разрешений сохранена для обратной совместимости. В будущем выпуске она будет устранена. |
Системная хранимая процедура sp_helprotect сообщает о разрешениях на доступ к защищаемым объектам уровня базы данных.
Внимание! |
---|
При запрете разрешения CONTROL на базу данных неявно запрещается разрешение CONNECT на эту базу данных. Участник, для которого запрещено разрешение CONTROL в базе данных, не может подключаться к базе данных. С этой же лексемой запрет разрешения CONTROL SERVER неявно запрещает разрешение CONNECT SQL на сервере. Участник, для которого запрещено разрешение CONTROL SERVER на сервере, не может подключиться к серверу. |
Разрешения
Участник, указанный параметром AS, должен иметь либо разрешение CONTROL, либо разрешение более высокого уровня, включающее в себя разрешение на защищаемый объект. При использовании параметра AS указанный участник должен быть владельцем защищаемого объекта, разрешение на который запрещается.
Участник, получивший разрешение CONTROL SERVER, например член фиксированной серверной роли sysadmin, может запретить любое разрешение на любой защищаемый объект сервера. Участник, получивший разрешение CONTROL на базу данных, например член фиксированной роли базы данных db_owner, может запретить любое разрешение на любой защищаемый объект в базе данных. Участник, получивший разрешение CONTROL на схему, может запретить любое разрешение на любой защищаемый объект в этой схеме. Участник, указанный в предложении AS, должен быть владельцем защищаемого объекта, разрешения на который запрещаются.
Примеры
Сведения о синтаксисе защищаемых объектов см. в следующих разделах.
См. также
Справочник
DENY (Transact-SQL)
REVOKE (Transact-SQL)
sp_addgroup (Transact-SQL)
sp_addlogin (Transact-SQL)
sp_adduser (Transact-SQL)
Хранимая процедура sp_changegroup (Transact-SQL)
sp_changedbowner (Transact-SQL)
sp_dropgroup (Transact-SQL)
sp_dropuser (Transact-SQL)
Хранимая процедура sp_helpgroup (Transact-SQL)
sp_helprotect (Transact-SQL)
sp_helpuser (Transact-SQL)
Справка и поддержка
Получение помощи по SQL Server 2005
Журнал изменений
Версия | Журнал |
---|---|
12 декабря 2006 г. |
|