数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

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


发布日期:2024年08月07日
 
确定SQL Server用户是否属于某个角色

对数据库正常功能的访问常常取决于赋予指定用户的权利例如管理人员可能需要(一定的)权限来运行特定的查询或者存储过程而向他们进行报告的用户则没有(这一权限)对于一个很小的机构而言你可以为具体的用户赋予具体的权利但是随着用户数量的增长这种方法会变得越来越难以处理即使只有个用户维护工作也会成为你的恶梦

包含我们感兴趣数据的表格是sysusers和sysmembers前面一个表格包含有关于用户和角色的数据而这两者由IsSQLRole这个数据列来区分如果数据行表示的是一个角色而不是一个用户那么IsSQLRole数据列就包含有下面的代码列出了所有的用户和角色

SELECT Member = Usersname Role = RolesName

FROM sysusers Users sysusers Roles sysmembers Members

WHERE Rolesuid = Membersgroupuid

AND Rolesissqlrole =

AND Usersuid = mberuid

ORDER BY

要列出属于指定角色的成员的用户就要把代码更改为下面这样

DECLARE @role varchar()

SET @role = Managers

SELECT MemberName = Usersname RoleName = RolesName

FROM sysusers Users sysusers Roles sysmembers Members

WHERE Rolesname = @role

AND Rolesuid = Membersgroupuid

AND Rolesissqlrole =

AND Usersuid = mberuid

ORDER BY

你可能更习惯把这段代码转化成用户定义函数(userdefined functionUDF)它会返回一个布尔函数用来指示当前用户是否是所关心的角色的成员把变量@role变成一个参数并传递它而不是定义它就像我在上面做的一样利用它你可以编写出自己的应用程序代码在任何你需要确定给定用户角色的时候调用这个函数

上一篇:SQLServer死锁的解除方法

下一篇:Whats new in Microsoft SQLServer2000(六)