Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
高级SQL数据通过多个表进行比较_Sql_Synchronization_Comparison - Fatal编程技术网

高级SQL数据通过多个表进行比较

高级SQL数据通过多个表进行比较,sql,synchronization,comparison,Sql,Synchronization,Comparison,考虑以下情况。 两个表(A和B),在两个环境(开发和测试)中,这些表中有记录。 如果查看表的内容,您就会知道函数数据是相同的。 我的意思是,除了PK和FK值,Roger这个名字与水果和蔬菜有关 在开发环境中: 表A 1罗杰 2凯文 表B(斜体字段是表A的FK) 1 1水果 2 1蔬菜 3.2肉 在测试环境中: 表A 4罗杰 5凯文 表B(斜体字段是表A的FK) 7.4水果 8.4蔬菜 9.5肉 我正在寻找一个SQL数据比较工具,它会告诉我上述情况没有区别。 或者,如果有,它将以正确的顺序生成插入

考虑以下情况。
两个表(A和B),在两个环境(开发和测试)中,这些表中有记录。
如果查看表的内容,您就会知道函数数据是相同的。
我的意思是,除了PK和FK值,Roger这个名字与水果和蔬菜有关

在开发环境中: 表A
1罗杰
2凯文

表B(斜体字段是表A的FK)
1 1水果
2 1蔬菜
3.2肉

在测试环境中: 表A
4罗杰
5凯文

表B(斜体字段是表A的FK)
7.4水果
8.4蔬菜
9.5肉

我正在寻找一个SQL数据比较工具,它会告诉我上述情况没有区别。
或者,如果有,它将以正确的顺序生成插入和更新脚本(先在A中插入,然后在B中插入)


我对它的性能和功能非常满意。

大多数数据比较工具允许您忽略列;但是,您希望它们不要忽略FK列,而是确定Test.TableA的4等于Dev.TableA的1,以便表B中的第一行相同。这是正确的吗

我不知道有什么工具能做到这一点。现在,对于第二个问题,大多数数据比较工具都会按照正确的顺序为您生成脚本。你可以看看Redgate的


如果您有Visual Studio Developer Edition,它会附带一个数据比较工具(可单独安装,称为Visual Studio Database Edition)

我有一个存储过程,用于比较任意两个表。事实证明,这也适用于视图。因此,我可以比较两个视图,每个视图都返回模式的“展平”版本。我可以省略诸如标识/代理键之类的列,也可以指示我的proc忽略它们


至于插入,我不确定。

我在红门上找到了这个:


我联系了他们,他们告诉我这项功能将在下一版本的Data Compare中实现。

您也可以从Devart尝试。它允许您比较数据并设置所需操作的结果。查看它的性能和简单性。

使用数据源的可视差异程序(而不是像典型的差异程序那样的文件),查找任何差异都很简单。顾名思义,它是一个框架:您必须向它提供两个查询以进行比较,一个用于开发环境,另一个用于测试环境。在您的特定情况下,查询将是相同的,类似于:

SELECT A.person, B.foodgroup
FROM A JOIN B on A.IdPerson = B.IdPerson
ORDER BY A.person, B.foodgroup
SqlDiffFramework在一个窗口中提供了两个并排的查询工具。您只需将一端指向DEV数据库,另一端指向测试数据库,然后运行两个查询来获取和比较数据。(您甚至可以保存快照,然后对所选快照运行差异,以查看差异(如果有的话)是如何随着时间的推移而出现的。)

但是请注意,SqlDiffFramework并没有处理请求的第二部分,即生成脚本以使它们匹配


[SqlDiffFramework,1.0版,2010.04.29推出,是开源的,免费提供。]

试试看。我喜欢这个工具。

如果您使用的是sql server 2008,您可以使用merge语句,它将根据您的需要插入update或delete。

他实际上需要数据比较工具。SQL比较比较架构的。我相信这两种工具都在工具带中。至少你可以找到使数据相同的工具。我在RedGate上看到了这个主题:嘿,你能在你的FK上启用更新级联吗?同时联系他们,看看他们是否修复了错误:SDC-889。您也可以禁用FK的执行更新,然后重新启用它们。我与他们联系,缺陷/功能将于2009年6月提供-幸运-)甜蜜的I+1您的问题为我的答案做腿部工作;-)希望它能成功。Redgate有很好的工具。