select *
from (
select 'T1' T, *
from DB1.dbo.Table
except
select 'T2' T, *
from DB2.dbo.Table
) as T
union all
select *
from (
select 'T2' T, *
from DB2.dbo.Table
except
select 'T1' T, *
from DB1.dbo.Table
) as T
ORDER BY 2,3,4, ..., 1 -- make T1 and T2 to be close in output 2,3,4 are UNIQUE KEY SEGMENTS
Kode tes:
declare @T1 table (ID int)
declare @T2 table (ID int)
insert into @T1 values(1),(2)
insert into @T2 values(2),(3)
select *
from (
select *
from @T1
except
select *
from @T2
) as T
union all
select *
from (
select *
from @T2
except
select *
from @T1
) as T
Hasil:
ID
-----------
1
3
Catatan:Memerlukan waktu lama untuk membandingkan tabel besar, ketika mengembangkan solusi "tuned" atau refactorig, yang akan memberikan hasil yang sama seperti REFERERCE - mungkin bijaksana untuk memeriksa parameter sederhana terlebih dahulu:seperti
select count(t.*) from (
select count(*) c0, SUM(BINARY_CHECKSUM(*)%1000000) c1 FROM T_REF_TABLE
-- select 12345 c0, -214365454 c1 -- constant values FROM T_REF_TABLE
except
select count(*) , SUM(BINARY_CHECKSUM(*)%1000000) FROM T_WORK_COPY
) t
Ketika ini kosong, Anda mungkin memiliki hal-hal di bawah kendali, dan mungkin Anda dapat memodifikasi ketika Anda gagal Anda akan melihat "nilai konstan FROM T_REF" untuk isert untuk menghemat lebih banyak waktu untuk pemeriksaan berikutnya!!!