22.3.2 授予数据库中对象的权限
好吧,用户拥有了登录名,并且,能够访问你想要他或她可以访问的数据库,那么,是否现在就万事大吉了呢?如果事情真有那么简单就好了!现在当然还没有一切就绪。
在用户能够访问什么的问题上,SQL Server给了我们级别相当精细的控制。多数时候,一些信息是希望用户能够访问到的,但是,数据库中也有另一些信息是不希望用户访问的。例如,你可能想 要客户服务人员能够查看和维护订单信息,但是可能不希望他们乱看工资信息。或许,反之亦然——你需要人力资源人员能够编辑雇员记录,但是,或许不想要他们 在交易上给某人很大的折扣。
SQL Server允许你给SQL Server中一些不同的对象指派一组不同的权限。能够为其指派权限的对象包括表、视图和存储过程。触发器隐含具有创建它们的人的权限。
对象上的用户权限分为6种不同的类型。
用户权限
说 明
SELECT
允许用户“看到”数据。如果用户拥有该权限,则用户能够在其被授予权限的表或视图上运行SELECT语句
INSERT
允许用户创建新的数据。具有这种权限的用户能够运行INSERT语句。注意,与许多系统不同,具有INSERT能力并不一定意味着拥有SELECT权限
UPDATE
允许用户修改已有的数据。具有这种权限的用户能够运行UPDATE语句。类似于INSERT语句,具有UPDATE能力并不一定意味着拥有SELECT权限。
DELETE
允许用户删除数据。具有这种权限的用户能够运行DELETE语句。同样,具有DELETE能力不一定意味着拥有SELECT权限
REFERENCES
在要插入行的表中有引用另一个表的外键约束,而用户在那个表上没有SELECT权限,REFERENCES权限允许用户插入行
EXECUTE
允许用户EXECUTE指定的存储过程
在你正在把权限指定到其上的特定的表、视图或存储过程中,可以在需要时混合搭配这些权限。
可以在Management Studio中指派这些权限,你只需导航到服务器的“安全性”结点的“登录名”选项上。在用户上右击,并选择“属性”。根据你是在数据库中还是在安全性结 点中,打开的对话框将有所不同,但是,无论哪一种情况,都能够得到设置权限的选项。使用T-SQL指派权限会使用三个命令,了解这三个命令是有益的,即使 你只准备通过Management Studio来指派权限(术语是相同的)。
1.GRANT
GRANT把对象上指定的访问权限给予指定的用户或角色,对象是GRANT语句的主体。
GRANT语句的语法如下所示:
GRANT
ALL [PRIVILEGES] | <权限>[,…n]
ON
<表名或视图名>[(<列名>[,…n])]










