列出用户及其在SQL Server中的角色

问题描述 投票:11回答:2

我想获得SQL Server数据库中所有用户及其角色的列表。我正在尝试做的是找出某些用户是否有权访问多个数据库。是否有可以直接执行此操作的查询?

sql sql-server-2005
2个回答
17
投票

我认为您会发现此资源有帮助:

http://consultingblogs.emc.com/jamiethomson/archive/2007/02/09/SQL-Server-2005_3A00_-View-all-permissions.aspx

摘自文章:

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

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 '')'
© www.soinside.com 2019 - 2024. All rights reserved.