SQLSERVER2005中的数据对象访问权限

对于用户操作数据或者执行存储过程的活动,需要一类称为“对象许可权限”的权限。“对象许可权限”

授予对表、视图、表值函数、存储过程、扩展存储过程、标量函数、聚合函数、服务队列或同义词的权限

(1)表和视图的许可权限

表和视图的许可权限能够控制用户对表或者视图执行SELECT、INSERT、UPDATE、DELETE语句的能力

如果用户需要在update语句中使用where子句,那么除了授予用户update权限外,还必须授予用户select执行权限

 

(2)列的许可权限

列的许可权限包括、SELECT、UPDATE、REFERENCES语句的许可权限,可以有选择性地应用于单个列。

当利用FOREIGN KEY约束级联更改某列数据时,SQLSERVER必须利用FOREIGN KEY约束所引用的数据来

核实列中的数据。如果用户没有对所引用的列或表的SELECT许可权限,那么就必须将该列的REFERENCES许可权限授予该用户

(3)存储过程的许可权限

Execute权限是唯一用于存储过程的许可权限

(4)标量函数权限的许可权限

Execute权限是唯一用于标量函数的许可权限

(5)表值函数权限的许可权限

SELECT权限是唯一用于表值函数的许可权限

 

----------------------------------------华丽的分割线---------------------------------------------------------

对于用户或角色的许可权限有以下3种状态:授予grant,回收revoke,拒绝deny

用户或角色的许可权限以记录的形式存储在各个数据库的sysprotects系统视图中

1 SELECT  a.*, b.[name]
2 FROM    [sys].[sysprotects] AS a
3 LEFT JOIN [sys].[sysusers] AS b ON a.[uid] = b.[uid]
4 ORDER BY a.[id]

 

sql server dbo架构权限 sql server权限包括_sql server dbo架构权限

sql server dbo架构权限 sql server权限包括_SQLSERVER权限_02

 

下面给出一个例子

1 --分别用下列三段语句授予、回收和拒绝数据库用户James和public角色对表
 2 --Product的INSERT、UPDATE、DELETE权限
 3 --建议在授权时避免使用ALL权限 这里先grant ALL再收窄权限
 4 USE [AdventureWorks]
 5 GO
 6 GRANT ALL ON [Production].[Product] TO James,PUBLIC
 7 GO
 8 
 9 USE [AdventureWorks]
10 GO
11 DENY INSERT,UPDATE,DELETE
12 ON [Production].[Product]
13 TO James,PUBLIC
14 GO
15 
16 USE [AdventureWorks]
17 GO
18 REVOKE INSERT,UPDATE,DELETE
19 ON [Production].[Product]
20 TO James,PUBLIC
21 GO

华丽的分割线-------------------------------------------------------

SQLSERVER中权限的继承

用户既可以执行单独被授权的许可,也可以继承和执行对它们所属的角色授权的所有动作。

例如,用户Carl是数据库角色Sales的成员,Product表对于用户Carl废除了Select权限,对于数据库角色Sales 授予了Select权限,

那么Carl对于Product表的Select操作最终是授予许可权限

Deny语句能够阻止用户执行相应的动作。无论许可权限是否直接授予用户,Deny语句能够最终决定用户所具有的许可权限。

例如,用户James是数据库角色Sales的成员,Product表对于用户James授予了update权限,对于 --数据库角色Sales拒绝了update权限。

这时,James除了拥有Product表授予的update权限以外,还继承了Product表对Sales角色拒绝update权限,

那么James对于Product表的update操作最终是拒绝许可权限

注意:sysadmin角色的成员和db_owner角色的成员对于数据库具有所有语句 --和对象永远是授予许可权限,是不能被拒绝和废除的

-------------------------------------------------华丽的分割线-----------------------------------------

用户映射:将新建的登录帐户映射到数据库帐户,否则用户仅能登录SQLSERVER,以及访问master,tempdb数据库,

默认情况下不能访问用户数据库。除非登录帐户是sysadmin角色的成员,或者用户数据库中存在guest帐户