4

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

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

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

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

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

4

3 回答 3

1

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

select count('x') from TAbleY

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

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

于 2009-05-20T01:10:12.863 回答
1

RedGate 的SQL 数据比较可能是答案。

于 2009-05-20T01:11:09.803 回答
1

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

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

于 2013-03-02T05:57:40.967 回答