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

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

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

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

本部分包含以下方面的信息:

要求

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

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

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

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

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

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

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

常见任务

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

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

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

了解比较结果

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

说明
Object 显示表或视图的名称以及一个复选框,该复选框指示是否应在写入更新或导出更新脚本时同步目标。 不包含数据的表或视图没有该复选框。
不同的记录 显示目标中键与源相同但数据与源不同的记录的数量。 括号中是标记为要在写入更新或导出更新脚本时更新的记录的数量。
只在源中 显示目标中未出现的源记录的数量。 括号中是标记为要在写入更新或导出更新脚本时添加的记录的数量。
只在目标中 显示源中未出现的目标记录的数量。 括号中是标记为要在写入更新或导出更新脚本时删除的记录的数量。
相同的记录 显示目标中键和数据都与源相同的记录的数量。 在写入更新或导出更新脚本时不更新这些记录。

表和视图详细信息

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

另请参阅

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