日期:2014-05-17  浏览次数:20490 次

如何使用SQL语句查到数据库用户在哪个固定数据库角色中!
如何使用SQL语句查到数据库用户在哪个固定数据库角色中!
我知道可以从管理器中看到,但我想看看从哪个SQL语句可以查到每个用户在哪个固定数据库角色中!

------最佳解决方案--------------------


database_name
exec sp_helpuser user_name
查看所有用户时省略用户名即可


------其他解决方案--------------------

--用户对应角色
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

------其他解决方案--------------------
角色 sp_helprolemember
权限 sp_helprotect
------其他解决方案--------------------

SELECT * FROM sys.syslogins
SELECT * FROM sys.sysusers

------其他解决方案--------------------
引用:
SQL code??1234567--用户对应角色SELECT Member = Users.name, Role = Roles.NameFROM sysusers Users, sysusers Roles, sysmembers MembersWHERE Roles.uid = Members.groupuidAND Roles.issqlrole = 1AND U……


非常感谢你的回答,但我想要所有用户的固定数据库角色,这条语句只能查不出来~
------其他解决方案--------------------
引用:
引用:SQL code??1234567--用户对应角色SELECT Member = Users.name, Role = Roles.NameFROM sysusers Users, sysusers Roles, sysmembers MembersWHERE Roles.uid = Members.groupuidAND Rol……


? 所有用户的固定数据库角色。
try 这个

SELECT B.name AS roles,C.name AS users
FROM sys.database_role_members A
INNER JOIN sys.database_principals B ON A.role_principal_id = B.principal_id
INNER JOIN sys.database_principals C ON A.member_principal_id = c.principal_id

------其他解决方案--------------------
在需要查看的数据库执行:
exec sp_helprolemember
------其他解决方案--------------------
引用:
引用:引用:SQL code??1234567--用户对应角色SELECT Member = Users.name, Role = Roles.NameFROM sysusers Users, sysusers Roles, sysmembers MembersWHERE Roles.uid = Me……

还是查不出来
------其他解决方案--------------------
引用:
在需要查看的数据库执行:
exec sp_helprolemember

我想要的看这样的结果
用户名  角色名  
sa      db_owner
test    db_ddladmin
------其他解决方案--------------------
角色名 ,用户名。 这样都不符合要求啊 。。。
------其他解决方案--------------------
引用:
角色名 ,用户名。 这样都不符合要求啊 。。。

我的最终目的是想一条语句查到所有用户的权限,可惜查了很多视图和存储过程都只能查到当前用户
总感觉SQL Server这方面做得实在有点欠缺

------其他解决方案--------------------