Tsql 获取具有指定角色的所有数据库用户的列表
我想获取具有指定角色的所有数据库用户的列表。角色是存储过程或函数的参数 例如带有用户名及其角色的select语句Tsql 获取具有指定角色的所有数据库用户的列表,tsql,Tsql,我想获取具有指定角色的所有数据库用户的列表。角色是存储过程或函数的参数 例如带有用户名及其角色的select语句 +============+========== | User name | Role | +============+========== MS SQL Server 2008可能会使用类似的内容 SELECT SU.Name AS UserName, SR.Name AS RoleName FROM sysUsers AS SU INNER
+============+==========
| User name | Role |
+============+==========
MS SQL Server 2008可能会使用类似的内容
SELECT
SU.Name AS UserName, SR.Name AS RoleName
FROM
sysUsers AS SU
INNER JOIN
sysUsers AS SR ON SU.GID = SR.UID
WHERE
SU.GID <> SU.UID
ORDER BY
RoleName, UserName
这取决于您希望如何传递参数……假设您将使用角色的id
declare @roleID int
select
role_principal_id as roleID,
user_name(role_principal_id) as roleName,
member_principal_id as memberID,
user_name(member_principal_id) as memberName
from
sys.database_role_members
where
role_principal_id = @roleID
在SQL 2005和2008中,此信息最容易在两个目录视图中访问 此查询应提供您正在查找的信息
select rp.name as database_role, mp.name as database_user
from sys.database_role_members drm
join sys.database_principals rp on (drm.role_principal_id = rp.principal_id)
join sys.database_principals mp on (drm.member_principal_id = mp.principal_id)
类似的内容可以帮助您:
select sys.server_role_members.role_principal_id ,role.name as rolename
, sys.server_role_members.member_principal_id , member.name as membername
from sys.server_role_members
join sys.server_principals as role
on sys.server_role_members.role_principal_id = role.principal_id
join sys.server_principals as member
on sys.server_role_members. member_principal_id = member_principal_id;
不会返回users.sys.sysmembers的角色名,它来自SQL Server 2000。2005/2008是向后兼容的,所以(目前)没有问题,但如果你只是在2008年学习如何做到这一点,然后我建议改为使用sys.database\u role\u members。您是说系统角色还是应用程序角色?我说的是数据库角色和数据库用户。要列出登录和身份验证类型,请选择rp.name作为DatabaseRole,mp.name作为Member,mp.[type\u desc]作为LoginType,mp.authentication\u type\u desc AS AuthType FROM sys.database\u members drm JOIN sys.database\u principals rp ON drm.role\u principal\u id=rp.principal\u id JOIN sys.database\u principals mp ON drm.member\u principal\u id=mp.principal\u id
select sys.server_role_members.role_principal_id ,role.name as rolename
, sys.server_role_members.member_principal_id , member.name as membername
from sys.server_role_members
join sys.server_principals as role
on sys.server_role_members.role_principal_id = role.principal_id
join sys.server_principals as member
on sys.server_role_members. member_principal_id = member_principal_id;