回 帖 发 新 帖 刷新版面

主题:高手进来看一看,很多问题?

除DBA以外,
在SQL中,什么样的用户可以执行 create role 这个语句呢?
而什么样用户用grant授权的语句给这个角色分配权限呢?如grant select on table student to role1,是不是对象student所有者才有这个权限呢?即执行该语句用户得有什么样的权限呢?
将一个或者多个角色权限授予别外角色或者用户如
grantt role1 ,role2 to role3  什么样的用户有这个权限可以执行这个语句呢?
以上诸问请分别回答/谢谢

回复列表 (共4个回复)

沙发

sa,超级系统用户可以

板凳

以下摘自联机丛书

GRANT 权限依赖于所授予的语句权限和权限中涉及的对象。sysadmin 角色中的成员可在任何数据库中授予任何权限。对象所有者可为他们所拥有的对象授予权限。db_owner 或 db_securityadmin 角色的成员可授予其数据库中任何语句或对象上的任何权限。

需要权限的语句是那些在数据库中增加对象,或对数据库执行管理活动的语句。每条需要权限的语句都有一个特定的角色集,自动有权限执行此语句。例如,sysadmin、db_owner 和 db_ddladmin 角色的成员默认有CREATE TABLE 权限。sysadmin 和 db_owner 角色以及表的所有者默认有对表执行 SELECT 语句的权限。

有一些 Transact-SQL 语句不能被授予权限;执行这些语句要求有固定角色中的成员资格,此角色有默示执行特殊语句的权限。例如,若要执行 SHUTDOWN 语句,用户必须添加为 serveradmin 角色中的成员。

dbcreator、processadmin、securityadmin 和 serveradmin 固定服务器角色的成员仅有权执行以下 Transact-SQL 语句。

语句 dbcreator processadmin securityadmin serveradmin bulkadmin 
ALTER DATABASE X     
CREATE DATABASE X     
BULK INSERT     X 
DBCC    X (1)   
DENY   X (2)    
GRANT   X (2)    
KILL  X    
RECONFIGURE    X  
RESTORE X     
REVOKE   X (2)    
SHUTDOWN    X  


(1) 有关更多信息,请参见 DBCC 语句。
(2) 仅适用于 CREATE DATABASE 语句。



说明  diskadmin 和 setupadmin 固定服务器角色的成员没有权限执行任何 Transact-SQL 语句,他们只能执行特定的系统存储过程。但是,sysadmin 固定服务器角色的成员有权限执行所有的 Transact-SQL 语句。


下面的固定数据库角色的成员有权限执行指定的 Transact-SQL 语句。


语句 
db_owner  
db_datareader  
db_datawriter  
db_ddladmin  db_backupoperator  db_securityadmin  
ALTER DATABASE X   X   
ALTER FUNCTION X   X   
ALTER PROCEDURE X   X   
ALTER TABLE X (1)    X   
ALTER TRIGGER X   X   
ALTER VIEW X (1)    X   
BACKUP X    X  
CHECKPOINT X    X  
CREATE DEFAULT X   X   
CREATE FUNCTION X   X   
CREATE INDEX X (1)    X   
CREATE PROCEDURE X   X   
CREATE RULE X   X   
CREATE TABLE X   X   
CREATE TRIGGER X (1)    X   
CREATE VIEW X      X   
DBCC X    X (2)   
DELETE X (1)   X    
DENY X     X 
DENY on object X      
DROP  X (1)    X   
EXECUTE  X (1)       
GRANT X     X 
GRANT on object  X (1)       
INSERT X (1)   X    
READTEXT X (1)  X     
REFERENCES X (1)    X   
RESTORE X      
REVOKE X     X 
REVOKE on object  X (1)       
SELECT X (1)  X     
TRUNCATE TABLE X (1)    X   
UPDATE X (1)   X    
UPDATE STATISTICS X (1)       
UPDATETEXT X (1)   X    
WRITETEXT X (1)   X    


(1) 权限也适用于对象所有者。
(2) 有关更多信息,请参见 DBCC 语句。



说明  db_accessadmin 固定数据库角色的成员没有执行任何 Transact-SQL 语句的权限,只可执行特定的系统存储过程。


不需要权限即可执行的 Transact-SQL 语句有(已自动授予 public):

BEGIN TRANSACTION COMMIT TRANSACTION 
PRINT RAISERROR 
ROLLBACK TRANSACTION SAVE TRANSACTION 
SET   


有关执行系统存储过程所需权限的更多信息,请参见相应的系统存储过程。

3 楼

要看详细的细节,最好看联机众书

4 楼

我认为grant这个东西是逐层向下的,第一个是用这个数据库的人也就是administrator有权限进行grant语句,其实数据库管理员的角色只有一个,就是这个所谓的administrator,它可以grant给别的人,赋予别的用户什么样的权利,一切都在他的掌管范围内,你没听过级联回收权力吗?如果一个user的上一级或更上一级收回了他的一切权力,那么他授予别人的权力也会失去效力的,你有没有什么样的权力取决于administrator给了你什么样的权力,说得有点乱,哎,我就知道我不上文科是对的。

我来回复

您尚未登录,请登录后再回复。点此登录或注册