![SQL Server 2016从入门到精通(视频教学超值版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/756/26793756/b_26793756.jpg)
上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数据表执行更新和删除的操作权限,输入语句如下。
![](https://epubservercos.yuewen.com/4FBA48/15253388305240806/epubprivate/OEBPS/Images/Figure-T140_40074.jpg?sign=1739095041-iTECWAZIBYDqCft87opZLaGpxQj5JAMZ-0-3d60bc1f1c812842e0971a7f2db68583)
- UPDATE和DELETE为允许被授予的操作权限。
- stu_info为权限执行对象。
- guest为被授予权限的用户名称。
- WITH GRANT OPTION表示该用户还可以向其他用户授予其自身所拥有的权限。
这里只是对GRANT语句有一个大概的了解,在后面章节中会详细介绍该语句的用法。
5.3.2 拒绝权限操作——DENY
出于某些安全性的考虑,可能不太希望让一些人来查看特定的表,此时可以使用DENY语句来禁止对指定表的查询操作,DENY可以被管理员用来禁止某个用户对一个对象的所有访问权限。
【例5.27】禁止guest用户对stu_info表的操作更新权限,输入语句如下。
![](https://epubservercos.yuewen.com/4FBA48/15253388305240806/epubprivate/OEBPS/Images/Figure-T140_40075.jpg?sign=1739095041-BnJvvSHDF1MfloRnPMmmN8IHqI8hGVAr-0-922d1c8e571a02fc58163a5a0cf4bc92)
5.3.3 收回权限操作——REVOKE
既然可以授予用户权限,同样可以收回用户的权限,如收回用户的查询、更新或者删除权限。T-SQL中可以使用REVOKE语句来实现收回权限的操作。
【例5.28】收回guest用户对stu_info表的删除权限,输入语句如下。
![](https://epubservercos.yuewen.com/4FBA48/15253388305240806/epubprivate/OEBPS/Images/Figure-T141_40076.jpg?sign=1739095041-XGHhZGPSosuiDx2ruv5Jn4Pa0ClYgBt4-0-58f96e36e7061af562fc30d56954c5dc)