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
指定通过 Windows 登录帐户创建的 SQL Server 登录帐户的名称。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 目录视图中查看服务器主体的有关信息。
如果您拒绝对通过 GRANT OPTION 被授予权限的主体的权限,但是未指定 CASCADE,则 DENY 语句将失败。
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 权限。
示例
A. 拒绝对登录名的 IMPERSONATE 权限
以下示例对通过 Windows 用户 AdvWorks\YoonM 创建的 SQL Server 登录名拒绝对 SQL Server 登录名 WanidaBenshoof 的 IMPERSONATE 权限。
USE master;
DENY IMPERSONATE ON LOGIN::WanidaBenshoof TO [AdvWorks\YoonM];
GO
B. 使用 CASCADE 拒绝 VIEW DEFINITION 权限
以下示例拒绝 SQL Server 登录名 RMeyyappan 对 SQL Server 登录名 EricKurjan 的 VIEW DEFINITION 权限。CASCADE 选项指示还会拒绝 RMeyyappan 授予 VIEW DEFINITION 权限的主体对 EricKurjan 的该权限。
USE master;
DENY VIEW DEFINITION ON LOGIN::EricKurjan TO RMeyyappan
CASCADE;
GO