sql server 2005用户权限设置深入分析

2020-07-06 05:54:03易采站长站整理

当再次用TestAccount登录名运行SELECT语句时,将得到一个错误——你不再能够访问。此外还要注意,由于我们使用了ALL关键字,因此,也拒绝将Public所拥有的INSERT、DELETE和UPDATE访问权限授予TestAccount。
注意,DENY是SQL Server 7.0中新增的语句。在6.5版本中有拒绝授予权限的概念,但是,其实现方式是不同的。在6.5版中,不是使用DENY,而是发出两次REVOKE语句。新的DENY关键字让事情更加清晰明了。
3.REVOKE
REVOKE将消除以前发出的GRANT或DENY语句的影响。可以把该语句想成是有针对性的“撤销”语句。
REVOKE的语法混合了GRANT和DENY语句:
REVOKE [GRANT OPTION FOR]
ALL [PRIVILEGES] | <权限>[,…n]
ON
<表名或视图名>[(列名 [,…n])]
|<存储过程或扩展存储过程名>
TO | FROM <登录ID或角色名>[,…n]
[CASCADE]
[AS <角色名>]
实际上,这里要做的说明与对GRANT和DENY语句的说明相同——然而,我将在这里再次讲述,以免你为了快速查找有关REVOKE的说明而向前翻阅本书。
同样,ALL关键字表明,想要撤销在该对象类型上所有可用的权限。如果不使用ALL关键字,则需要提供一个或多个具体的权限,这些具体的权限是针对那个对象想要撤销的权限。
PRIVILEGES除了提供ANSI-92兼容性外,依然没有任何实际的作用。
ON关键字用作一个占位符,以说明接下来的是想要撤销其权限的对象。
CASCADE关键字与GRANT语句中的WITH GRANT OPTION相对应。CASCADE告诉SQL Server,如果用户在WITH GRANT OPTION规则下授予了其他人访问权限,则对于所有这些被授予权限的人,也将撤销他们的访问权限。
同样,AS关键字只是用来说明想要基于哪个角色发出这一命令。
我们使用sa连接,撤销授予的到NorthwindSecure中的Region表的访问权限。
执行完该语句后,TestAccount将不能再在Region表上运行SELECT语句。
为了撤销DENY,我们同样也发出一个REVOKE语句。这一次,将重新获得到Employees表的访问权限:
现在,我们已经了解所有这些命令是如何针对单个用户来控制访问权限的,接下来,看这样一种方法,该方法通过分组管理来极大简化对这些权限的管理。
22.3.3 用户权限和语句级别的许可
用户许可权限并不仅仅局限于数据库中的对象上——它们也能扩展到某些其他的语句,这些语句不直接与任何特定的对象束缚在一起。SQL Server允许你对运行几种不同的语句的许可权限进行控制,这些语句包括:
l CREATE DATABASE;
l CREATE DEFAULT;
l CREATE PROCEDURE;
l CREATE RULE;
l CREATE TABLE;
l CREATE VIEW;
l BACKUP DATABASE;
l BACKUP LOG。
到现在为止,除了两个备份命令外,其他所有的这些命令我们都已经在操作中见过了。(备份命令要做什么是不言自明的,因此,眼下不准备在这上面花费时间,我们将在第24章中讨论它们——只需记住,它们是你能够在语句级别进行控制的东西。)
相关文章 大家在看