DENY, запрет разрешения на сервер-участник (Transact-SQL)
Запрещает разрешения, предоставленные для имени входа SQL Server.
Синтаксис
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
См. также