将一个或多个表中的数据与引用数据库中的数据进行比较和同步
本主题适用于:
Visual Studio 旗舰版 |
Visual Studio 高级专业版 |
Visual Studio 专业版 |
Visual Studio 学习版 |
---|---|---|---|
通过使用 Visual Studio,可以比较源数据库和目标数据库中的数据,并指定应比较哪些表。 可以查看数据并确定要同步的更改。 然后,可以更新目标以同步数据库,或将更新脚本导出到 Transact-SQL 编辑器或文件。
例如,可能要同步数据库,以便用生产数据的副本更新临时服务器。 还可能要同步一个或多个表,以便用另一个数据库中的引用数据填充这些表。 此外,可能会在运行测试之前和之后对数据进行比较,以作为额外的确认形式。
可以比较两个数据库中的数据,但不能指定数据库项目 (.dbproj) 或 .dbschema 文件进行比较,因为其中不含数据。
要求
比较表或视图中的数据时,源数据库中的表或视图必须与目标数据库中对应的表或视图具有若干相同的特性。 不满足以下条件的表和视图不进行比较,并且不显示在**“新建数据比较”**向导的第二页上:
表必须具有匹配的列名称,而这些名称具有兼容的数据类型。
表、视图和所有者的名称区分大小写。 有关架构的更多信息,请参见比较和同步数据库架构。
表必须具有相同的主键、唯一索引或唯一约束。
视图必须具有相同的唯一聚集索引。
只有在具有相同名称的情况下才能将一个表与一个视图进行比较。
每个对象都有一个键或索引可确定该对象所对应的其他对象。 但是,每个表或视图都可以有多个主键、唯一索引或唯一约束。 因此,可能要指定要使用的键、索引或约束。
常规任务
在下表中,可以找到支持此方案的常规任务的说明,以及指向有关如何成功完成这些任务的更多信息的链接。
常规任务 |
支持内容 |
---|---|
亲身实践:可以按照介绍性演练操作,熟悉如何比较两个数据库中的数据。 |
|
设置相应选项以控制数据的比较方式:比较数据时,可以安全地忽略标识列、禁用触发器和禁用外键。 还可以从更新脚本中删除主键、索引和唯一约束。 |
|
比较表中的数据并(可选)更新目标以匹配源:指定要比较的源数据库和目标数据库并运行比较后,可以在“数据比较”窗口中查看结果。 不仅可以查看区别的详细信息,还可以查看可用于同步数据的更新脚本。 确认两个数据库之间的区别后,可以指定针对每个区别的操作。 然后,可以更新目标,或将更新脚本导出到 Transact-SQL 编辑器或文件。 可能要导出该脚本,以使您或其他人可以在您应用更改前查看该脚本。 |
|
排除问题:可以详细了解如何排除在比较和同步数据库架构时可能遇到的常见问题。 |
了解比较结果
下表介绍了**“数据比较”**窗口中的五个列。
列 |
注释 |
---|---|
对象 |
显示表或视图的名称,以及一个复选框,指示在写入更新或导出更新脚本时是否应同步目标。 不包含数据的表或视图没有该复选框。 |
不同的记录 |
显示目标中键与源相同但数据与源不同的记录的数量。 将标为要在您写入更新或导出更新脚本时更新的记录的数量用括号括起来。 |
只在源中 |
显示目标中未出现的源中的记录数量。 将标为要在您写入更新或导出更新脚本时添加的记录的数量用括号括起来。 |
只在目标中 |
显示源中未出现的目标中的记录数量。 将标为要在您写入更新或导出更新脚本时删除的那些记录的数量用括号括起来。 |
相同的记录 |
显示目标中键和数据都与源相同的记录的数量。 当您写入更新或导出更新脚本时不更新这些记录。 |
表和视图详细信息
单击**“数据比较”**窗口中的任何表或视图时,细节窗格中将显示表或视图包含的所有行。 细节窗格中的每个选项卡显示一个不同的类别(“不同的记录”、“只在源中”、“只在目标中”、“相同的记录”)。 对于每行,都可以选中或清除相应的复选框以指示是否在更新脚本中加入该更改。
相关方案
- 比较和同步数据库架构
可以比较数据库、数据库项目 (.dbproj) 或 .dbschema 文件的架构,然后指定要加入更新脚本的更改。