DENY, запрет разрешений на объект (Transact-SQL)
Запрещает разрешения на член класса OBJECT защищаемых объектов. Члены класса OBJECT: таблицы, представления, возвращающие табличное значение функции, хранимые процедуры, расширенные хранимые процедуры, скалярные функции, статистические функции, очереди обслуживания и синонимы.
Соглашения о синтаксисе в Transact-SQL
Синтаксис
DENY <permission> [ ,...n ] ON
[ OBJECT :: ][ schema_name ]. object_name [ ( column [ ,...n ] ) ]
TO <database_principal> [ ,...n ]
[ CASCADE ]
[ AS <database_principal> ]
<permission> ::=
ALL [ PRIVILEGES ] | permission [ ( column [ ,...n ] ) ]
<database_principal> ::=
Database_user
| Database_role
| Application_role
| Database_user_mapped_to_Windows_User
| Database_user_mapped_to_Windows_Group
| Database_user_mapped_to_certificate
| Database_user_mapped_to_asymmetric_key
| Database_user_with_no_login
Аргументы
- permission
Обозначает разрешение, которое можно запретить для содержащегося в схеме объекта. Список разрешений см. в подразделе «Примечания» далее в этом разделе.
ALL
Запрет разрешения ALL не запрещает все возможные разрешения. Запрет ALL эквивалентен запрету всех разрешений ANSI-92, применимых к данному объекту. Значение ALL меняется следующим образом.Разрешения на скалярные функции: EXECUTE, REFERENCES.
Разрешения на возвращающие табличное значение функции: DELETE, INSERT, REFERENCES, SELECT, UPDATE.
Разрешения на хранимые процедуры: EXECUTE
Разрешения на таблицы: DELETE, INSERT, REFERENCES, SELECT, UPDATE.
Разрешения на представления: DELETE, INSERT, REFERENCES, SELECT, UPDATE.
- PRIVILEGES
Включено для совместимости с ANSI-92. Не влияет на работу аргумента ALL.
column
Указывает имя столбца в таблице, представлении или возвращающей табличное значение функции, для которых запрещается разрешение. Круглые скобки обязательны ( ). Для столбца можно запретить только разрешения SELECT, REFERENCES и UPDATE. Аргумент column можно задавать в предложении разрешений или после имени защищаемого объекта.Внимание! В SQL Server 2005 DENY на уровне таблицы не имеет преимущества над GRANT на уровне столбца. Такая несогласованность иерархии разрешений оставлена для обратной совместимости.
- ON [ OBJECT :: ] [ schema_name ] . object_name
Указывает объект, для которого запрещается разрешение. Фраза OBJECT необязательна, если задан аргумент schema_name. Если фраза OBJECT используется, квалификатор области (::) обязателен. Если аргумент schema_name не задан, используется схема по умолчанию. Если аргумент schema_name задан, необходим квалификатор области схемы (.).
- TO <database_principal>
Задает участника, для которого запрещается разрешение.
- CASCADE
Показывает, что запрещаемое разрешение также запрещается для других участников, которым оно было предоставлено данным участником.
- AS <database_principal>
Задает участника, от которого участник, выполняющий данный запрос, получает право на запрет разрешения.
- Database_user
Задает пользователя базы данных.
- Database_role
Задает роль базы данных.
- Application_role
Задает роль приложения.
- Database_user_mapped_to_Windows_User
Задает пользователя базы данных, сопоставленного с пользователем Windows.
- Database_user_mapped_to_Windows_Group
Задает пользователя базы данных, сопоставленного с группой Windows.
- Database_user_mapped_to_certificate
Задает пользователя базы данных, сопоставленного с сертификатом.
- Database_user_mapped_to_asymmetric_key
Задает пользователя базы данных, сопоставленного с асимметричным ключом.
- Database_user_with_no_login
Задает пользователя базы данных, не имеющего соответствующего участника уровня сервера.
Замечания
Данные об объектах доступны в различных представлениях каталога. Дополнительные сведения см. в разделе Представления каталога объектов (Transact-SQL).
Объект — это защищаемый объект уровня схемы, содержащийся в той схеме, которая является его родителем в иерархии разрешений. Наиболее специфичные и ограниченные разрешения, которые можно запретить для объекта, перечислены в следующей таблице вместе с общими разрешениями, неявно содержащими их.
Разрешение объекта | Содержится в разрешении на объект | Содержится в разрешении на схему |
---|---|---|
ALTER |
CONTROL |
ALTER |
CONTROL |
CONTROL |
CONTROL |
DELETE |
CONTROL |
DELETE |
EXECUTE |
CONTROL |
EXECUTE |
INSERT |
CONTROL |
INSERT |
RECEIVE |
CONTROL |
CONTROL |
REFERENCES |
CONTROL |
REFERENCES |
SELECT |
RECEIVE |
SELECT |
TAKE OWNERSHIP |
CONTROL |
CONTROL |
UPDATE |
CONTROL |
UPDATE |
VIEW DEFINITION |
CONTROL |
VIEW DEFINITION |
Разрешения
Необходимо разрешение CONTROL для объекта.
При использовании предложения AS указанный участник должен быть владельцем объекта, разрешения на который запрещаются для этого участника.
Примеры
А. Запрет разрешения SELECT на таблицу
В следующем примере запрещает разрешение SELECT
для пользователя RosaQdM
на таблицу Person.Address
в базе данных AdventureWorks
.
USE AdventureWorks;
DENY SELECT ON OBJECT::Person.Address TO RosaQdM;
GO
Б. Запрет разрешения EXECUTE на хранимую процедуру
В следующем примере запрещается разрешение EXECUTE
на хранимую процедуру HumanResources.uspUpdateEmployeeHireInfo
для роли приложения под названием Recruiting11
.
USE AdventureWorks;
DENY EXECUTE ON OBJECT::HumanResources.uspUpdateEmployeeHireInfo
TO Recruiting11;
GO
В. Запрет разрешения REFERENCES на представление с CASCADE
В следующем примере запрещается разрешение REFERENCES
на столбец EmployeeID
в представлении HumanResources.vEmployee
для пользователя Wanida
с CASCADE
.
USE AdventureWorks;
DENY REFERENCES (EmployeeID) ON OBJECT::HumanResources.vEmployee
TO Wanida CASCADE;
GO
См. также
Справочник
GRANT, предоставление разрешений на объект (Transact-SQL)
REVOKE, отмена разрешения (Transact-SQL)
Представления каталога объектов (Transact-SQL)
Другие ресурсы
Разрешения
Участники
Защищаемые объекты