我需要一个用户权限列表,其中包括用户对该数据库具有的所有权限,方法是将该权限分配给该用户,或者是用户通过数据库角色(显式且有效)获取该权限。
到目前为止,我已经设法通过下面的T-SQL来获取用户权限(每个数据库中的每个用户)的列表,但是这些权限仅是显式权限(即,那些显式授予或拒绝的权限),但是是从未输出数据库角色。
DECLARE @command varchar(MAX)
SELECT @command = 'use ?
if DB_ID("?")>4
select DB_NAME () DatabaseName, pr.name DB_User, pr.type_desc, pr.authentication_type_desc, pe.state_desc, pe.permission_name, s.name + ''.'' + o.name AS ObjectName
FROM sys.database_principals AS pr
JOIN sys.database_permissions AS pe
ON pe.grantee_principal_id = pr.principal_id
JOIN sys.objects AS o
ON pe.major_id = o.object_id
JOIN sys.schemas AS s
ON o.schema_id = s.schema_id
where pr.type!=''R'' '
EXEC sp_MSforeachdb @command