• This is what I have used (SQL 90+):

    EXEC sp_MSForEachDB 'SELECT ''?'' AS [Database Name], su1.name AS [Database User Name], su2.name AS [Database Role]

    FROM [?].sys.database_role_members r

    INNER JOIN [?]..sysusers su1 ON su1.[uid] = r.member_principal_id

    INNER JOIN [?]..sysusers su2 ON su2.[uid] = r.role_principal_id

    WHERE su2.name IN(''db_owner'') AND su1.name NOT IN(''dbo'')'

    Note that this is an Admin type discovery script and as such, the IN/NOT IN constructs are there for reusability. This will report any db user in the db_owner role for a given instance. You can modify the code to fit your needs though.

    MJM