仅使用tablediff实用程序获取源和数据不匹配

时间:2016-06-16 13:01:23

标签: sql-server comparison data-synchronization

我使用tablediff实用程序将数据从serval数据库源转移到目标数据库,我得到的结果包含源数据库和目标数据库之间的所有差异

Dest. Only  N'1027' N'799'  N'91443'    N'1'    
Mismatch    N'103A' N'799'  N'13010'    N'1'    DATE_CURRENT DATE_OPERATION MATRICULE_UTILISATEUR QTE QTE_FINAL QTE_INIT QTE_OPERATION REFERENCE_DOCUMENT TYPE_DOCUMENT 
Src. Only   N'103A' N'310'  N'30129'    N'1'    

所以生成的sql文件包含delete Dest. Only行,update Mismatch行和insert Src. Only

我的问题是:有没有办法使用tablediff来获得MismatchSrc. Only行的结果?

2 个答案:

答案 0 :(得分:4)

tablediff工具命令的末尾添加以下内容

-dt -et DiffResults

它将删除名为DiffResults的现有表,并在目标服务器和数据库中创建一个新表。 然后,您可以查询DiffResults表以获取所需的行。 在我的测试中,我运行以下

SELECT * FROM DiffResults
WHERE MSdifftool_ErrorDescription in ('Mismatch','Src. Only')

SELECT * FROM DiffResults
WHERE MSdifftool_ErrorCode in (0,2) -- 0 is for 'Mismatch';  1 is for 'Dest. Only' and 2 is for 'Src. Only'

可以在此处找到更多详细信息 - https://technet.microsoft.com/en-us/library/ms162843.aspx

答案 1 :(得分:0)

如果要使用命令行的结果,可以使用findstr:

管道输出
foo = Perceptron()