如何验证两个SQL Server数据库是否包含相同的数据?

时间:2009-05-20 01:02:43

标签: sql-server testing verify

鉴于已知两个MS SQL数据库具有相同的模式,我该如何判断它们是否包含相同的数据副本?

我正在使用MS SQL Server 2008 Express,并使用ADO.NET API在.Net框架的C#和v2.0中进行编码。这两个数据库实例都在同一个SQL服务器上。

背景:我编写了将数据从数据库导出到一组文件的软件,并从这些文件中重新导入数据(到数据库的另一个副本);我想测试在往返过程中是否丢失了任何数据(更具体地说,是否在初始导出期间丢失或遗留任何数据)。

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

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

3 个答案:

答案 0 :(得分:1)

第一步是比较记录计数。您可以快速执行此操作

select count('x') from TAbleY

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

为了比较表中的数据,我将使用CHECKSUM函数。

答案 1 :(得分:1)

RedGate的SQL Data Compare可能就是答案。

答案 2 :(得分:1)

您可以使用Redgate SQL DATA COMPARE 1>它将告诉您数据库的每个表中的数据总数 2 - ;它将生成一个脚本,该脚本将显示其中的数据不同,以便通过执行它可以使数据相同。 3>它将通过SQL COMPARE显示架构是否不同 4>许多功能都很有用,您也可以同步两个数据库。

除此之外,Visual Studio 2012为您提供了比较数据的选项,您也可以尝试