Use
BINARY_CHECKSUM
Suppose you have PrimaryKey Column(or any Unique column) on two tables, let's say Id
SELECT T1.*
FROM
(
SELECT *, CAST(BINARY_CHECKSUM(*) AS BIGINT) AS BCHECKSUM
FROM Table1
)AS T1
LEFT OUTER JOIN
(
SELECT Id, CAST(BINARY_CHECKSUM(*) AS BIGINT) AS BCHECKSUM
FROM Table2
)AS T2
ON T1.Id = T2.Id
WHERE T1.BCHECKSUM <> T2.BCHECKSUM
Now you have unmatched rows... Note down Ids for unmatched and continue with BINARY_CHECKSUM(Col1, Col2, ..., Coln) (i.e. initially we used *, now we select specific columns to narrow down unmatch to specific column's row) on the above(but it restrict to the Ids that are not matching) script and keep on removing each column in step until you see BINARY_CHECKSUM is same.