实验课上,要求将一个角色的权限授予另一个角色。 在咕果上搜了老半天,结果只找到怎么把角色赋予用户。(汗,怎么这波技术含量这么低) 然后找到了ALTER ROLE ADD MEMBEREXEC sp_roleaddmember两个指令用于添加用户至角色。 用法:

ALTER ROLE <role-name> ADD MEMBER <user-name>
EXEC sp_roleaddmember [@rolename=]<role-name>, [@membername=]<user-name>

根据StackOverflow上该回答中一位用户所言,两者在SQL Server 2012中没有区别,参考资料如下: https://msdn.microsoft.com/en-us/library/ms189775.aspx https://msdn.microsoft.com/en-us/library/ms187750.aspx

但是在使用时,惊奇的发现在可以将Role作为参数填入以上操作的user-name部分,可以正常执行不会报错。 在子角色(user-name)的所有权限中查不到父角色(role-name)的权限,但是在父角色的成员表中可以看到子角色。 经过尝试后,发现直接对用户赋予子角色时,会自动给用户注册一个父角色的权限。 也就是说,直接把需要附加给角色的角色权限作为该角色的父角色,数据库便会在执行指令时自动赋予其父角色的权限。

例: 有两个角色,JuniorRoleSeniorRole,要将JuniorRole的权限赋予SeniorRole(显然高级用户通常应该拥有初级用户的全部权限),在SQL Server中可以这么做:

ALTER ROLE JuniorRole ADD MEMBER SeniorRole;

之后在进行用户授权时,ALTER ROLE SeniorRole add SeniorUser不仅会为SeniorUser赋予SeniorRole的角色,还会为其赋予JuniorRole的角色,目的达成。

标签: none

添加新评论