主题:高手进来看一看,很多问题?
helun
[专家分:40] 发布于 2006-10-13 22:40:00
除DBA以外,
在SQL中,什么样的用户可以执行 create role 这个语句呢?
而什么样用户用grant授权的语句给这个角色分配权限呢?如grant select on table student to role1,是不是对象student所有者才有这个权限呢?即执行该语句用户得有什么样的权限呢?
将一个或者多个角色权限授予别外角色或者用户如
grantt role1 ,role2 to role3 什么样的用户有这个权限可以执行这个语句呢?
以上诸问请分别回答/谢谢
回复列表 (共4个回复)
沙发
无私地和别人交流 [专家分:2120] 发布于 2006-11-15 12:04:00
sa,超级系统用户可以
板凳
菜鸭 [专家分:5120] 发布于 2006-11-16 08:49:00
以下摘自联机丛书
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 楼
likui23 [专家分:0] 发布于 2006-12-18 22:50:00
要看详细的细节,最好看联机众书
4 楼
tld5yj [专家分:1310] 发布于 2006-12-19 16:57:00
我认为grant这个东西是逐层向下的,第一个是用这个数据库的人也就是administrator有权限进行grant语句,其实数据库管理员的角色只有一个,就是这个所谓的administrator,它可以grant给别的人,赋予别的用户什么样的权利,一切都在他的掌管范围内,你没听过级联回收权力吗?如果一个user的上一级或更上一级收回了他的一切权力,那么他授予别人的权力也会失去效力的,你有没有什么样的权力取决于administrator给了你什么样的权力,说得有点乱,哎,我就知道我不上文科是对的。
我来回复