权限内容 说明 CONTROL 将类似所有权的能力授予给被授予者。被授予者实际上拥有安全对 象上已定义的所有权限 ALTER 授予更改特定安全对象的属性(除了所有权之外)的能力。在特定范 围授予 ALTER 权限时,也会一起授予更改、创建或删除该范围内 包含的任何安全对象的能力 ALTER ANY <服务器安全对象> 授予创建、更改或删除服务器安全对象的个别实例的能力 ALTER ANY <数据库安全对象> 授予 CREATE、ALTER 或 DROP 数据库安全对象的个别实例的 能力 TAKE OWNERSHip 让被授予者可以取得被授予的安全对象的所有权 CREATE <服务器安全对象> 将创建服务器安全对象的能力授予被授予者 CREATE <数据库安全对象> 将创建数据库安全对象的能力授予给被授予者 VIEW DEFINITION 让被授予者能访问元数据
表 15-4 中的“安全对象”指的是权限设置操作的作用对象,如“Create Role”中的“Role” 就是此处的安全对象。 用 T-SQL 设置权限 在 T-SQL 中设置权限可使用 GRANT(授予)、DENY(拒绝)及 REVOKE(撒销)三个语句, 这三个语句的用法非常多,基本形式如下: GRANT ALL 或权限名称 ON 对象 TO 用户或角色名称 WITH 选项 REVOKE ALL 或权限名称 ON 对象 TO 用户或角色名称 CASCADE DENY ALL 或权限名称 ON 对象 TO 用户或角色名称 CASCADE 每 一 语 句 都 有 三 个 元 素 , 分 别 是 权 限 名 称 、 对 象 及 用 户 ( 角 色 ), 如 下 (Ch15/1524Grant.sql): USE eBook GRANT SELECT ON OBJECT::dbo.members TO David GRANT REFERENCES (MemberID) ON OBJECT::dbo.Orders TO David WITH GRANT OPTION 以上语句是使用 Grant 语句分别授予权限给 David,但对象内容不同,对象名称请以 “OBJECT::”开头,其后最好使用完整名称,即加上所有者。第二个 Grant 语句的作用对 象较特殊,“(MemberID) ON OBJECT:: dbo.Orders”,表示作用于 Orders 对象的 MemberID 字段,将此列的视图权限授予 David。同时加上“WITH GRANT OPTION”,表示 David 可 再将此权限授予他人,相当于图 15-23 的“具有授予”。 而在 Revoke 及 Deny 语句中,最后可加入 Cascade,此关键词的功能是一起撤销 To 之 后用户可授予其他人的权限,即取消“具有授予”。 查看可用权限 由于可用权限非常多,在 T-SQL 中没有选项可供选择,所以使用 GRANT、DENY 及 REVOKE 时,必须首先知道权限名称才能进行设置。读者可查看 sys.fn_builtin_permissions、 sys.database_permissions、sys.server_permissions 三个系统数据表,如图 15-24 所示。