GRANT (Transact-SQL)

更新日期: 2006 年 12 月 12 日

将安全对象的权限授予主体。

语法

Simplified syntax for GRANT
GRANT { ALL [ PRIVILEGES ] }
      | permission [ ( column [ ,...n ] ) ] [ ,...n ]
      [ ON [ class :: ] securable ] TO principal [ ,...n ] 
      [ WITH GRANT OPTION ] [ 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
    主体的名称。可为其授予安全对象权限的主体随安全对象而异。有关有效的组合,请参阅下面列出的子主题。
  • GRANT OPTION
    指示被授权者在获得指定权限的同时还可以将指定权限授予其他主体。
  • 作为 principal
    指定一个主体,执行该查询的主体从该主体获得授予该权限的权利。

备注

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

REVOKE 语句可用于删除已授予的权限,DENY 语句可用于防止主体通过 GRANT 获得特定权限。

授予权限将删除对所指定安全对象的相应权限的 DENY 或 REVOKE 权限。如果在包含该安全对象的更高级别拒绝了相同的权限,则 DENY 优先。但是,在更高级别撤消已授予权限的操作并不优先。

数据库级权限在指定的数据库范围内授予。如果用户需要另一个数据库中的对象的权限,请在该数据库中创建用户帐户,或者授权用户帐户访问该数据库以及当前数据库。

ms187965.Caution(zh-cn,SQL.90).gif注意:
在 SQL Server 2005 中,表级 DENY 并不优先于列级 GRANT。保留权限层次结构中此方面的不一致是为了向后兼容。在未来的版本中会将其删除。

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

权限

授权者(或用 AS 选项指定的主体)必须拥有带 GRANT OPTION 的相同权限,或拥有隐含所授予权限的更高权限。如果使用 AS 选项,则还应满足其他要求。有关详细信息,请参阅特定于安全对象的主题。

对象所有者可以授予对其所拥有的对象的权限。对某安全对象拥有 CONTROL 权限的主体可以授予对该安全对象的权限。

被授予 CONTROL SERVER 权限的用户(例如,sysadmin 固定服务器角色的成员)可以授予对相应服务器中任一个安全对象的任意权限。被授予某一数据库 CONTROL 权限的用户(如 db_owner 固定数据库角色的成员)可以对该数据库中的任意安全对象授予任何权限。被授权 CONTROL 权限的用户可以授予对相应架构中任一个对象的任意权限。

示例

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

应用程序角色

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

程序集

GRANT 程序集权限 (Transact-SQL)

非对称密钥

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

证书

GRANT 证书权限 (Transact-SQL)

约定

GRANT Service Broker 权限 (Transact-SQL)

数据库

GRANT 数据库权限 (Transact-SQL)

端点

GRANT 端点权限 (Transact-SQL)

全文目录

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

函数

GRANT 对象权限 (Transact-SQL)

登录

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

消息类型

GRANT Service Broker 权限 (Transact-SQL)

对象

GRANT 对象权限 (Transact-SQL)

队列

GRANT 对象权限 (Transact-SQL)

远程服务绑定

GRANT Service Broker 权限 (Transact-SQL)

角色

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

路由

GRANT Service Broker 权限 (Transact-SQL)

架构

GRANT 架构权限 (Transact-SQL)

服务器

GRANT 服务器权限 (Transact-SQL)

服务

GRANT Service Broker 权限 (Transact-SQL)

存储过程

GRANT 对象权限 (Transact-SQL)

对称密钥

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

同义词

GRANT 对象权限 (Transact-SQL)

系统对象

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

GRANT 对象权限 (Transact-SQL)

类型

GRANT 类型权限 (Transact-SQL)

用户

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

视图

GRANT 对象权限 (Transact-SQL)

XML 架构集合

GRANT 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 日

更改的内容:
  • 在 ALL 选项的说明中增加了内容,即不推荐使用该选项并且保留该选项仅用于向后兼容。