DENY Server Principal Permissions (Transact-SQL)
Denies permissions granted on a SQL Server login.
Permissions at the server scope can be denied only when the current database is master.
Information about server permissions is visible in the sys.server_permissions catalog view. Information about server principals is visible in the sys.server_principals catalog view.
The DENY statement will fail if CASCADE is not specified when you are denying a permission to a principal that was granted that permission with GRANT OPTION.
A SQL Server login is a server-level securable. The most specific and limited permissions that can be denied on a SQL Server login are listed in the following table, together with the more general permissions that include them by implication.
SQL Server login permission | Implied by SQL Server login permission | Implied by server permission |
|---|---|---|
CONTROL | CONTROL | CONTROL SERVER |
IMPERSONATE | CONTROL | CONTROL SERVER |
VIEW DEFINITION | CONTROL | VIEW ANY DEFINITION |
ALTER | CONTROL | ALTER ANY LOGIN |
A. Denying IMPERSONATE permission on a login
The following example denies IMPERSONATE permission on the SQL Server login WanidaBenshoof to a SQL Server login created from the Windows user AdvWorks\YoonM.
USE master; DENY IMPERSONATE ON LOGIN::WanidaBenshoof TO [AdvWorks\YoonM]; GO
B. Denying VIEW DEFINITION permission with CASCADE
The following example denies VIEW DEFINITION permission on the SQL Server login EricKurjan to SQL Server login RMeyyappan. The CASCADE option indicates that VIEW DEFINITION permission on EricKurjan will also be denied to principals to which RMeyyappan granted this permission.
USE master;
DENY VIEW DEFINITION ON LOGIN::EricKurjan TO RMeyyappan
CASCADE;
GO
