sp_msforeachdb 'use ? if exists (select 1 from sysmembers where user_name(memberuid) not in (''dbo'',''guest'') and user_name(groupuid) in (''db_owner'',''db_datareader'',''db_datawriter'')) begin select cast(db_name() as varchar(30)) as [Database Name] select case when grouping(groupuid) = 0 and grouping(memberuid) = 1 then cast(user_name(groupuid) as varchar(30)) else '''' end as [Role], case when grouping(groupuid) = 0 and grouping(memberuid) = 0 then cast (user_name(memberuid) as varchar(40)) else '''' end as [member] from dbo.sysmembers m where user_name(memberuid) not in (''dbo'',''guest'') and (user_name(groupuid) like ''db_%'') or exists (select 1 from sysmembers where memberuid = m.groupuid and user_name(groupuid) like ''db_%'') group by groupuid, memberuid with rollup order by groupuid, memberuid, grouping(groupuid) desc, grouping(memberuid) end'