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 Server WanidaBenshoof
для имени входа SQL Server, созданного из пользователя Windows AdvWorks\YoonM
.
USE master;
DENY IMPERSONATE ON LOGIN::WanidaBenshoof TO [AdvWorks\YoonM];
GO
Б. Запрещение разрешения VIEW DEFINITION с параметром CASCADE
В следующем примере производится запрещение разрешения VIEW DEFINITION
на имя входа SQL Server EricKurjan
для имени входа SQL Server RMeyyappan
. Параметр CASCADE
указывает, что разрешение VIEW DEFINITION
на EricKurjan
будет также запрещено участникам, которым RMeyyappan
его предоставил ранее.
USE master;
DENY VIEW DEFINITION ON LOGIN::EricKurjan TO RMeyyappan
CASCADE;
GO
См. также
Справочник
sys.server_principals (Transact-SQL)
sys.server_permissions (Transact-SQL)
GRANT, предоставление разрешений серверам-участникам (Transact-SQL)
REVOKE, отмена разрешений сервера-участника (Transact-SQL)
CREATE LOGIN (Transact-SQL)