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


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 можно задавать в предложении разрешений или после имени защищаемого объекта.

    ms173724.Caution(ru-ru,SQL.90).gifВнимание!
    В 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)

Другие ресурсы

Разрешения
Участники
Защищаемые объекты

Справка и поддержка

Получение помощи по SQL Server 2005