none
角色和权限的创建的问题 RRS feed

  • 问题

  • 版本:SqlServer2005

    use bugms --测试数据库 
    
    --1:
    create login TAA   --登录名
    with 
    password='111111' ,
    default_database=bugms --测试数据库 
    
    --2:
    create user db_Test --数据库用户
    for login taa 
    
    --3:
    create role db_RoleTest authorization db_Test --创建角色并把此角色授予给用户db_Test
    
    --4:
    exec sp_helprolemember --执行结果中并没有显示db_Test的角色是db_RoleTest
    
    --5:
    exec sp_addrolemember db_RoleTest,db_Test --角色和用户进行关联
    
    --6:
    exec sp_helprolemember --这时才显示db_Test的角色是db_RoleTest
    
    --7:
    grant create table on role::dbo to db_RoleTest --希望实现把dbo角色的建表权限给角色db_RoleTest,但此语句报错
    
    --8:如果给用户和架构授予权限是OK的
    grant create table to db_Test 
    grant alter on schema::dbo to db_RoleTest
    

    问题:

    在步骤3中,创建角色的同时就把角色授予给用户db_Test了,authorization在MSDN中的定义是"将拥有新角色的数据库用户或角 色.",可为什么接下来的步骤4中却没有显示?

    在步骤7中,想给db_RoleTest角色授予建表权限,这个权限是继承角色dbo的,但写法有错误,不知 道该怎么写.虽然给用户和架构授予建表权限也可以达到同样的目的,但我想知道如何给角色授予建表权限.

    2011年1月27日 5:48

答案

  • 第三部只是将db_roletest的所有者(owner)授予db_test,并没有将db_test添加到角色.并且db_test也没有db_roletest的相应的权限

    create role db_RoleTest authorization db_Test

    这个语句等效于

    create role db_roleTest

    alter authorization on role::db_roleTest to db_test

     

     

    grant create table on role::dbo to db_RoleTest --希望实现把dbo角色的建表权限给角色db_RoleTest,但此语句报错

    这里的dbo是个user,而不是角色. 不能显示给dbo授予权限,这是个特殊的用户,有用当前数据库的最高权限.


    有dba的职位吗(北京的),请联系我 stswordman#hotmail.com
    2011年1月27日 10:33
    版主