我想获取具有指定角色的所有数据库用户的列表。角色是存储过程或函数的参数。获取具有指定角色的所有数据库用户列表
Somethinf像一个带有用户名和它的角色的select语句。
+============+==========
| User name | Role |
+============+==========
MS SQL Server 2008的
我想获取具有指定角色的所有数据库用户的列表。角色是存储过程或函数的参数。获取具有指定角色的所有数据库用户列表
Somethinf像一个带有用户名和它的角色的select语句。
+============+==========
| 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
编辑1借用来获取与用户相关联的系统角色。 sys.sysmembers是将memberuid和groupuid作为唯一列的系统视图。您可以使用user_name()函数来检索每列的名称。
USE [YourDatabase]
SELECT user_name([memberuid]) as [Username], User_Name([groupuid]) as [Role_Name]
FROM [sys].[sysmembers]
只是取决于你想如何传递参数假定你将使用角色的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)
增强列出登录和身份验证类型 选择\t rp.name AS DatabaseRole \t \t \t,mp.name作为成员 \t \t \t,熔点。[type_desc] AS LoginType \t \t \t,mp.authentication_type_desc AS进行AuthType FROM \t \t sys.database_role_members DRM JOIN \t \t sys.database_principals RP ON drm.role_principal_id = rp.principal_id JOIN \t \t sys.database_principals mp ON drm.member_principal_id = mp.principal_id – 2016-12-12 12:35:10
您是在谈论系统角色还是应用程序角色? – 2010-07-29 23:58:23
我正在谈论数据库角色和数据库用户。 – nik 2010-07-30 09:04:20