WITH CTE_Roles (role_principal_id)AS(SELECT role_principal_id FROM sys.database_role_membersWHERE member_principal_id = USER_ID()UNION ALLSELECT drm.role_principal_idFROM sys.database_role_members drm INNER JOIN CTE_Roles CR ON drm.member_principal_id = CR.role_principal_id)SELECT USER_NAME(role_principal_id) RoleNameFROM CTE_RolesUNION ALLSELECT 'public'ORDER BY RoleName;