SQL Server 2016从入门到精通(视频教学超值版)
上QQ阅读APP看书,第一时间看更新

5.3 数据控制语句

数据控制语句(DCL)用来设置、更改用户或角色权限,包括GRANT、DENY、REVOKE等语句。

GRANT语句用来对用户授予权限,REVOKE语句可用于删除已授予的权限,DENY语句可用于防止主体通过GRANT获得特定权限。默认状态下,只有sysadmin、dbcreater、db_owner、db_securityadmin等成员有权执行数据控制语言。

5.3.1 授予权限操作——GRANT

SQL Server服务器通过权限表来控制用户对数据库的访问。在数据库中添加一个新用户之后,该用户可以查询系统表的权限,而不具有操作数据库对象的任何权限。

GRANT语句可以授予对数据库对象的操作权限,这些数据库对象包括表、视图、存储过程、聚合函数等,允许执行的权限包括查询、更新、删除等。看下面一个例题。

【例5.26】对名称为guest的用户进行授权,允许其对stu_info数据表执行更新和删除的操作权限,输入语句如下。

  • UPDATE和DELETE为允许被授予的操作权限。
  • stu_info为权限执行对象。
  • guest为被授予权限的用户名称。
  • WITH GRANT OPTION表示该用户还可以向其他用户授予其自身所拥有的权限。

这里只是对GRANT语句有一个大概的了解,在后面章节中会详细介绍该语句的用法。

5.3.2 拒绝权限操作——DENY

出于某些安全性的考虑,可能不太希望让一些人来查看特定的表,此时可以使用DENY语句来禁止对指定表的查询操作,DENY可以被管理员用来禁止某个用户对一个对象的所有访问权限。

【例5.27】禁止guest用户对stu_info表的操作更新权限,输入语句如下。

5.3.3 收回权限操作——REVOKE

既然可以授予用户权限,同样可以收回用户的权限,如收回用户的查询、更新或者删除权限。T-SQL中可以使用REVOKE语句来实现收回权限的操作。

【例5.28】收回guest用户对stu_info表的删除权限,输入语句如下。