Jag*_*ahu 42 sql sql-server sql-server-2008
我在Sql server 2008中有两个数据库,名为DB1和DB2.这两个数据库也有相同的表和相同的表数据.但是,我想检查这些表中的数据是否有任何差异.
有人可以帮我一个脚本吗?
Mik*_*son 29
select *
from (
select *
from DB1.dbo.Table
except
select *
from DB2.dbo.Table
) as T
union all
select *
from (
select *
from DB2.dbo.Table
except
select *
from DB1.dbo.Table
) as T
Run Code Online (Sandbox Code Playgroud)
测试代码:
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
Run Code Online (Sandbox Code Playgroud)
结果:
ID
-----------
1
3
Run Code Online (Sandbox Code Playgroud)
我使用Checksum(*)函数完成了这样的事情
在essance中,它为所有列数据创建行级校验和,然后您可以将每个表的每行的校验和相互比较,使用左连接,以查找不同的行.
希望有意义......
更好的例子....
select *
from
( select checksum(*) as chk, userid as k from UserAccounts) as t1
left join
( select checksum(*) as chk, userid as k from UserAccounts) as t2 on t1.k = t2.k
where t1.chk <> t2.chk
Run Code Online (Sandbox Code Playgroud)