将一个或多个表中的数据与引用数据库中的数据进行比较和同步

 

您可以比较数据库和目标数据库中的数据,并指定应比较哪些表。可以查看数据并确定要同步的更改。然后,可以更新目标以同步数据库,或将更新脚本导出到 Transact-SQL 编辑器或文件。

例如,可以同步数据库以使用生产数据的副本更新临时服务器。还可以同步一个或多个表以将另一个数据库中的引用数据填入这些表。此外,您可以在运行测试之前和之后以其他验证形式比较数据。

可以比较两个数据库中的数据,但不能指定数据库项目文件或 .dacpac 进行比较,因为其中不包含数据。

本节包含下列主题:

要求

在比较表或视图中的数据时,源数据库中的表或视图必须与目标数据库中的表或视图共享多个特性。未满足以下条件的表和视图将不进行比较,并且不会显示在“新建数据比较”向导的第二页上:

  • 表必须具有匹配的列名称,而这些名称具有兼容的数据类型。

    表、视图和所有者的名称是区分大小写的。

  • 表必须具有相同的主键、唯一索引或唯一约束。

  • 视图必须具有相同的唯一聚集索引。

  • 仅在表与视图同名时可比较二者。

每个对象均有一个可确定自身所对应的其他对象的键或索引。但是,每个表或视图均可有多个主键、唯一索引或唯一约束。因此,您可能需要指定要使用的键、索引或约束。

常见任务

在此部分中,您可以找到支持此方案的常见任务的说明。

**设置选项以控制数据的比较方式:**在比较数据时,可以安全地忽略标识列、禁用触发器和禁用外键。还可以从更新脚本中删除主键、索引和唯一约束。

**比较表中的数据并(可选)更新目标以匹配源:**在指定要比较的源数据库和目标数据库并进行比较后,可以在“数据比较”窗口中查看结果。不仅可以查看差异的详细信息,还可以查看可用于同步数据的更新脚本。在确定两个数据库之间的差异后,可以为每个差异指定相应的操作。然后,可以更新目标,或将更新脚本导出到 Transact-SQL 编辑器或文件。您可能需要导出该脚本,以便您自己或其他人可在您应用更改前检查该脚本。

了解比较结果

下表介绍了“数据比较”窗口中的五个列。

说明

对象

显示表或视图的名称以及一个复选框,该复选框指示是否应在写入更新或导出更新脚本时同步目标。该复选框对于不包含数据的表或视图不可用。

不同的记录

显示目标中键与源相同但数据与源不同的记录的数量。将标记为要在写入更新或导出更新脚本时更新的记录的数量用括号括起来。

只在源中

显示目标中未出现的源记录的数量。将标记为要在写入更新或导出更新脚本时添加的记录的数量用括号括起来。

只在目标中

显示源中未出现的目标记录的数量。将标记为要在写入更新或导出更新脚本时删除的记录的数量用括号括起来。

相同的记录

显示目标中键和数据都与源相同的记录的数量。在写入更新或导出更新脚本时不更新这些记录。

表和视图详细信息

在单击“数据比较”窗口中的任一表或视图时,详细信息窗格将显示该表或视图包含的所有行。详细信息窗格中的每个选项卡均显示一个不同的类别(“不同的记录”、“只在源中”、“只在目标中”、“相同的记录”)。对于每个行,您可以选中或清除相应的复选框以指示是否要在更新脚本中包含此更改。

请参阅

SQL Server Data Tools
如何使用架构比较来比较不同数据库定义