只获取源数据并使用tablediff实用程序进行数据比对时出现数据不匹配的问题

8
我正在使用 tablediff 工具将数据从多个数据库源传输到目标数据库,并得到了一个包含源数据库和目标数据库之间所有差异的结果,类似于这样:
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文件包含删除掉“只有目标”的行,更新“不匹配”的行以及插入“只有源”的行。

我的问题是:是否可以使用 tablediff 获取仅包含“不匹配”和“只有源”的行的结果?


嗨,你还需要帮助吗? - mvisser
2个回答

5
在使用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/zh-cn/library/ms162843.aspx


0
如果您想使用命令行的结果,可以使用findstr来进行输出管道操作:
tablediff <your parameters> | findstr /i "^Mismatch ^Src"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接