Identify rows that match on a key but differ in other columns
I think that this is what you're looking for...

WITH AllData AS (
  -- Get All Records that exist in both tables
  SELECT ID, Descr, Qty FROM A WHERE EXISTS (SELECT * FROM B WHERE A.ID = B.ID)
  UNION ALL
  SELECT ID, Descr, Qty FROM B WHERE EXISTS (SELECT * FROM A WHERE B.ID = A.ID)
)
SELECT ID, Descr, Qty
FROM AllData
GROUP BY ID, Descr, Qty
HAVING COUNT(*) = 1
ORDER BY ID


It first selects all of the rows where the ID exists in both tables (since if an ID exists in only one table, it can't have different values in the other table.)  Then it groups by the columns that you want to compare.  If the count is > 1, then they matched.  If the count = 1 then there was a difference.  Here is the SQL Fiddle that I used to verify this.

Edit:  For large data sets, the performance will likely be poor.  But indexing your tables should help with that.