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

Getting Source only and mismatch data with tablediff utility

我正在使用 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 行的结果吗??

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

-dt -et DiffResults

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

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

如果你想使用命令行的结果,你可以用 findstr 管道输出:

tablediff <your parameters> | findstr /i "^Mismatch ^Src"