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


DENY, запрет разрешения на сервер-участник (Transact-SQL)

Запрещает разрешения, предоставленные для имени входа SQL Server.

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

DENY permission [ ,...n ] } 
    ON LOGIN :: SQL_Server_login
    TO <server_principal> [ ,...n ]
    [ CASCADE ]
    [ AS SQL_Server_login ] 

<server_principal> ::= 
        SQL_Server_login
    | SQL_Server_login_from_Windows_login 
    | SQL_Server_login_from_certificate 
    | SQL_Server_login_from_AsymKey   

Аргументы

  • permission
    Определяет разрешение, т.е. доступ, который запрещается для имени входа SQL Server. Список разрешений указан в подразделе «Примечания» далее в этом разделе.

  • LOGIN :: SQL_Server_login
    Задает имя входа SQL Server, для которого разрешение запрещается. Требуется квалификатор области (::).

  • TO SQL_Server_login
    Задает имя входа SQL Server, для которого разрешение запрещается.

  • SQL_Server_login
    Задает имя входа SQL Server.

  • SQL_Server_login_from_Windows_login
    Задает имя входа SQL Server, созданное из имени входа Windows.

  • SQL_Server_login_from_certificate
    Задает имя входа SQL Server, сопоставленного с сертификатом.

  • SQL_Server_login_from_AsymKey
    Задает имя входа SQL Server, сопоставленного с ассиметричным ключом.

  • CASCADE
    Показывает, что отзываемое разрешение также отменяется для других участников, которым оно было предоставлено данным участником.

  • AS SQL_Server_login
    Задает имя входа SQL Server, по которому участник, выполняющий этот запрос, получает право запретить разрешение.

Замечания

Разрешения в области сервера могут запрещаться только в том случае, если текущая база данных является master.

Данные о разрешениях сервера отображаются в представлении каталога sys.server_permissions. Данные об участниках [системы безопасности] на уровне сервера отображаются в представлении каталога sys.server_principals.

Инструкция DENY завершается ошибкой, если разрешение запрещается участнику, который ранее предоставил его через GRANT OPTION, и при этом не указано предложение CASCADE.

Имя входа SQL Server является защищаемым на уровне сервера. Наиболее специфичные и ограниченные разрешения, которые могут быть запрещены для имени входа SQL Server, перечислены в следующей таблице, вместе с указанием общих разрешений, которые их подразумевают.

Разрешение имени входа SQL Server

Содержится в разрешении имени входа SQL Server

Содержится в разрешении сервера

CONTROL

CONTROL

CONTROL SERVER

IMPERSONATE

CONTROL

CONTROL SERVER

VIEW DEFINITION

CONTROL

VIEW ANY DEFINITION

ALTER

CONTROL

ALTER ANY LOGIN

Разрешения

Требует разрешения CONTROL имени входа или разрешения ALTER ANY LOGIN сервера.

Примеры

А. Запрещение разрешения IMPERSONATE на имя входа

В следующем примере производится запрещение разрешения IMPERSONATE на имя входа SQL ServerWanidaBenshoof для имени входа SQL Server, созданного из пользователя Windows AdvWorks\YoonM.

USE master;
DENY IMPERSONATE ON LOGIN::WanidaBenshoof TO [AdvWorks\YoonM];
GO

Б. Запрещение разрешения VIEW DEFINITION с параметром CASCADE

В следующем примере производится запрещение разрешения VIEW DEFINITION на имя входа SQL ServerEricKurjan для имени входа SQL ServerRMeyyappan. Параметр CASCADE указывает, что разрешение VIEW DEFINITION на EricKurjan будет также запрещено участникам, которым RMeyyappan его предоставил ранее.

USE master;
DENY VIEW DEFINITION ON LOGIN::EricKurjan TO RMeyyappan 
    CASCADE;
GO