I was given a similar task a few months ago and my solution was along the lines of the suggestion of glen.greaves -
identify the records with mismatches by using
select table a
union all select table b
except
select table b
union all
select table a
I had a function which took two fields and the name of the field and returned a value if the fields didn't match
field by field of the records that didn't match I looked for the field(s) with mismatches
oh and the first step was to limit the rows in table a and table b to records that matched on key fields