DENY (Transact-SQL)

更新日期: 2006 年 12 月 12 日

拒绝授予主体权限。防止主体通过其组或角色成员身份继承权限。

语法

Simplified syntax for DENY
DENY { ALL [ PRIVILEGES ] }
      | permission [ ( column [ ,...n ] ) ] [ ,...n ]
      [ ON [ class :: ] securable ] TO principal [ ,...n ] 
      [ CASCADE] [ AS principal ]

参数

  • ALL
    该选项不拒绝所有可能权限。拒绝 ALL 相当于拒绝下列权限。

    • 如果安全对象为数据库,则“ALL”表示 BACKUP DATABASE、BACKUP LOG、CREATE DATABASE、CREATE DEFAULT、CREATE FUNCTION、CREATE PROCEDURE、CREATE RULE、CREATE TABLE 和 CREATE VIEW。
    • 如果安全对象为标量函数,则“ALL”表示 EXECUTE 和 REFERENCES。
    • 如果安全对象为表值函数,则“ALL”表示 DELETE、INSERT、REFERENCES、SELECT 和 UPDATE。
    • 如果安全对象是存储过程,则“ALL”表示 EXECUTE。
    • 如果安全对象为表,则“ALL”表示 DELETE、INSERT、REFERENCES、SELECT 和 UPDATE。
    • 如果安全对象为视图,则“ALL”表示 DELETE、INSERT、REFERENCES、SELECT 和 UPDATE。
  • PRIVILEGES
    包含此参数以符合 SQL-92 标准。请不要更改 ALL 的行为。
  • permission
    权限的名称。下面列出的子主题介绍了不同权限与安全对象之间的有效映射。
  • column
    指定拒绝将其权限授予他人的表中的列名。需要使用括号“()”。
  • class
    指定拒绝将其权限授予他人的安全对象的类。需要范围限定符“::”。
  • securable
    指定拒绝将其权限授予他人的安全对象。
  • TO principal
    主体的名称。可以对其拒绝安全对象权限的主体随安全对象而异。有关有效的组合,请参阅下面列出的特定于安全对象的主题。
  • CASCADE
    指示拒绝授予指定主体该权限,同时,对该主体授予了该权限的所有其他主体,也拒绝授予该权限。当主体具有带 GRANT OPTION 的权限时,为必选项。
  • 作为 principal
    指定一个主体,执行该语句的主体从该主体获得拒绝授予该权限的权利。

备注

DENY 语句的完整语法很复杂。上面的关系图经过了简化,以突出说明其结构。下列主题对拒绝授予特定安全对象的权限时的完整语法进行了说明。

如果某主体的该权限是通过指定 GRANT OPTION 获得的,那么,在撤消其该权限时,如果未指定 CASCADE,则 DENY 将失败。

列级权限优先于对象权限。例如,如果将 DENY 权限应用到一个诸如表之类的基对象,然后将 GRANT 权限应用到此基对象中的某一列,则尽管在此基对象之上有 DENY 权限,GRANT 权限的被授权者仍将可以访问此列。但是,为了确保列级权限存在,必须在对基对象应用权限之后再应用它们。

ms188338.note(zh-cn,SQL.90).gif注意:
在 SQL Server 2005 中,保留权限层次结构中此方面的不一致是为了向后兼容。在未来的版本中会将其删除。

sp_helprotect 系统存储过程可报告对数据库级安全对象的权限。

ms188338.Caution(zh-cn,SQL.90).gif注意:
拒绝授予数据库 CONTROL 权限将隐式拒绝授予该数据库 CONNECT 权限。拒绝授予其数据库 CONTROL 权限的主体不能连接到该数据库。同样,拒绝授予 CONTROL SERVER 权限将隐式拒绝授予服务器 CONNECT SQL 权限。拒绝授予其服务器 CONTROL SERVER 权限的主体不能连接到该服务器。

权限

调用方(或使用 AS 选项指定的主体)必须对安全对象具有 CONTROL 权限,或对该安全对象具有隐含 CONTROL 权限的更高权限。如果使用 AS 选项,那么指定主体必须拥有其权限被拒绝授予的安全对象。

被授予 CONTROL SERVER 权限的用户(如 sysadmin 固定服务器角色的成员)可以拒绝对服务器中任何安全对象授予权限。被授予数据库 CONTROL 权限的用户(如 db_owner 固定数据库角色的成员)可以拒绝对数据库中任何安全对象授予权限。被授予架构 CONTROL 权限的用户可以拒绝对架构中任何对象授予权限。如果使用 AS 子句,那么指定主体必须拥有其权限被拒绝授予的安全对象。

示例

有关安全对象特定的语法,请参阅以下主题:

应用程序角色

DENY 数据库主体权限 (Transact-SQL)

程序集

DENY 程序集权限 (Transact-SQL)

非对称密钥

DENY 非对称密钥权限 (Transact-SQL)

证书

DENY 证书权限 (Transact-SQL)

约定

DENY Service Broker 权限 (Transact-SQL)

数据库

DENY 数据库权限 (Transact-SQL)

端点

DENY 端点权限 (Transact-SQL)

全文目录

DENY 全文目录权限 (Transact-SQL)

函数

DENY 对象权限 (Transact-SQL)

登录

DENY 服务器主体权限 (Transact-SQL)

消息类型

DENY Service Broker 权限 (Transact-SQL)

对象

DENY 对象权限 (Transact-SQL)

队列

DENY 对象权限 (Transact-SQL)

远程服务绑定

DENY Service Broker 权限 (Transact-SQL)

角色

DENY 数据库主体权限 (Transact-SQL)

路由

DENY Service Broker 权限 (Transact-SQL)

架构

DENY 架构权限 (Transact-SQL)

服务器

DENY 服务器权限 (Transact-SQL)

服务

DENY Service Broker 权限 (Transact-SQL)

存储过程

DENY 对象权限 (Transact-SQL)

对称密钥

DENY 对称密钥权限 (Transact-SQL)

同义词

DENY 对象权限 (Transact-SQL)

系统对象

DENY 系统对象权限 (Transact-SQL)

DENY 对象权限 (Transact-SQL)

类型

DENY 类型权限 (Transact-SQL)

用户

DENY 数据库主体权限 (Transact-SQL)

视图

DENY 对象权限 (Transact-SQL)

XML 架构集合

DENY XML 架构集合权限 (Transact-SQL)

请参阅

参考

DENY (Transact-SQL)
REVOKE (Transact-SQL)
sp_addgroup (Transact-SQL)
sp_addlogin (Transact-SQL)
sp_adduser (Transact-SQL)
sp_changegroup (Transact-SQL)
sp_changedbowner (Transact-SQL)
sp_dropgroup (Transact-SQL)
sp_dropuser (Transact-SQL)
sp_helpgroup (Transact-SQL)
sp_helprotect (Transact-SQL)
sp_helpuser (Transact-SQL)

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

发布日期 历史记录

2006 年 12 月 12 日

新增内容:
  • 添加了明确列级权限优先于对象权限的内容。