2009-05-20 78 views
4

给定两个已知具有相同模式的MS SQL数据库,应该如何判断它们是否包含相同的数据副本?如何验证两个SQL Server数据库是否包含相同的数据?

我正在使用MS SQL Server 2008 Express,并使用ADO.NET API在.Net框架的C#和v2.0中进行编码。这两个数据库实例都在同一个SQL服务器上。背景:我编写的软件可以将数据从一个数据库导出到一组文件中,并将这些文件中的数据重新导入到数据库的另一个副本中;我想测试在往返期间是否丢失了任何数据(更具体地说,是否在最初导出期间丢失或遗留任何数据)。

一个粗略的方法,我想是从每个数据库中的每个表到SELECT *,然后使用客户端代码比较选定的记录集。有没有另外一种方式,这将需要更少的客户端代码?

我发现了关于备份和恢复数据库以及关于选择和插入数据的文档,但没有注意到有关如何验证/证明往返已经完全成功的文档,即如何验证两个数据库中的表的两个副本是否包含相同的数据。

回答

1

第一步是比较记录数。您可以快速做到这一点

select count('x') from TAbleY 

您需要为每个表执行此操作。

要比较表中的数据,我会使用CHECKSUM函数。

+0

谢谢;我现在看到还有一个CHECKSUM_AGG函数可用于对表中的每一行进行校验和。 http://dbwhisperer.blogspot.com/2009/02/checksumagg-very-nifty-function.html建议将CHECKSUM与CHECKSUM_AGG结合起来用于QA应用程序。 – ChrisW 2009-05-20 01:46:46

1

RedGate的SQL Data Compare可能是答案。

+0

该产品具有比我所要求的功能更多的功能,但其存在意味着可能甚至基本功能不是内置的。 – ChrisW 2009-05-20 01:44:31

1

您可以使用展鹏SQL数据比较 1>它会告诉数据的总数在你的数据库 2的每个表>它会生成一个脚本,它会显示哪些数据是在它的不同,使得通过执行它,你可以使数据相同。 3>它会显示模式是否与SQL COMPARE不同 4>许多功能都很实用,您还可以同步两个数据库。

除此之外Visual Studio 2012为您提供了一个选项来比较数据,你也可以试试这个

相关问题