binary_checksum can in some case give same checksum, see bol.
This will give records that are
2. in table a but not in table b, and vice versa
( select *, binary_checksum(*) as bchk from a ) as a
( select *, binary_checksum(*) as bchk from b ) as b
on a.[order id] = b.[order id]
a.bchk <> b.bchk
or a.bchk + b.bchk is null