注册
 找回密码
 注册
江西广告网
查看: 394|回复: 0
打印 上一主题 下一主题

确定SQL Server用户是否属于某个角色

[复制链接]

该用户从未签到

1
跳转到指定楼层
发表于 2009-1-20 09:22:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
  对数据库正常功能的访问常常取决于赋予指定用户的权利。例如,管理人员可能需要(一定的)权限来运行特定的查询或者存储过程,而向他们进行报告的用户则没有(这一权限)。对于一个很小的机构而言,你可以为具体的用户赋予具体的权利,但是随着用户数量的增长,这种方法会变得越来越难以处理。即使只有50个用户,维护工作也会成为你的恶梦。      包含我们感兴趣数据的表格是sysusers和sysmembers。前面一个表格包含有关于用户和角色的数据,而这两者由IsSQLRole这个数据列来区分,如果数据行表示的是一个角色而不是一个用户,那么IsSQLRole数据列就包含有1。下面的代码列出了所有的用户和角色:      SELECT Member = Users.name, Role = Roles.Name   FROM sysusers Users, sysusers Roles, sysmembers Members   WHERE Roles.uid = Members.groupuid   AND Roles.issqlrole = 1   AND Users.uid = Members.memberuid   ORDER BY 2, 1      要列出属于指定角色的成员的用户,就要把代码更改为下面这样:      DECLARE @role varchar(100)   SET @role = 'Managers'   SELECT MemberName = Users.name, RoleName = Roles.Name   FROM sysusers Users, sysusers Roles, sysmembers Members   WHERE Roles.name = @role   AND Roles.uid = Members.groupuid   AND Roles.issqlrole = 1   AND Users.uid = Members.memberuid   ORDER BY 2, 1      你可能更习惯把这段代码转化成用户定义函数(user-defined function,UDF),它会返回一个布尔函数,用来指示当前用户是否是所关心的角色的成员。把变量@role变成一个参数,并传递它而不是定义它,就像我在上面做的一样。利用它,你可以编写出自己的应用程序代码,在任何你需要确定给定用户角色的时候调用这个函数。    <
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表