bal*_*aji 11 sql sql-server-2005
我想获得SQL Server数据库中所有用户及其角色的列表.我想要做的是找出某些用户是否拥有多个数据库的权限.有查询可以直接执行此操作吗?
kbr*_*ton 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
Run Code Online (Sandbox Code Playgroud)
小智 5
如果您只想获取一个数据库的用户和角色分配列表,您可以这样做。这适用于 Azure SQL。
select P.Name, R.Name
from sys.database_principals P
left outer join sys.database_role_members RM on P.principal_id=RM.member_principal_id
left outer join sys.database_principals R on R.principal_id=RM.role_principal_id
Run Code Online (Sandbox Code Playgroud)
如果您正在寻找服务器角色,请使用以下命令:
select
u.name [user],
r.name [role]
from
sys.server_principals u
join sys.server_role_members rm
on u.principal_id = rm.member_principal_id
and u.type in ('S')
join sys.server_principals r
on r.principal_id = rm.role_principal_id
and r.type in ('R')
Run Code Online (Sandbox Code Playgroud)