我想获得SQL Server数据库中所有用户及其角色的列表。我想要做的是找出某些用户是否拥有多个数据库的权限。有查询可以直接执行此操作吗?
答案 0 :(得分:16)
我认为您会发现此资源很有用:
来自文章:
select dp.NAME AS principal_name,
dp.type_desc AS principal_type_desc,
o.NAME AS object_name,
p.permission_name,
p.state_desc AS permission_state_desc
from sys.database_permissions p
left OUTER JOIN sys.all_objects o
on p.major_id = o.OBJECT_ID
inner JOIN sys.database_principals dp
on p.grantee_principal_id = dp.principal_id
答案 1 :(得分:0)
您可以使用以下命令在每个数据库中查找用户和相应角色:
exec sp_MSForeachDB @command1='SELECT db_name(db_id('' ? ''))
,user_name(DRM.member_principal_id) [DatabaseUser]
,user_name(DRM.role_principal_id) [DatabaseRole]
FROM sys.database_role_members DRM
INNER JOIN sys.database_principals DP
ON DRM.member_principal_id = DP.principal_id
INNER JOIN sys.database_principals dpr
ON drm.role_principal_id = dpr.principal_id
WHERE DRM.member_principal_id > 1
AND dpr.type IN ('' R '', '' A '')'