演练:比较两个数据库的数据

更新:2007 年 11 月

在本演练中,您将比较两个数据库的数据,根据差异生成数据操作语言 (DML) 脚本,然后使用该脚本用源数据库中的数据填充目标数据库。

您将在本演练按照以下过程进行:

  • 比较两个数据库的数据。在此过程中,您将找出数据中的差异,将其显示在网格中,然后生成说明这些差异的 DML 脚本。

  • 更新目标数据库。在此过程中,您会看到两种更新目标数据库以使其与源数据库匹配的方法。

先决条件

必须安装以下产品才能完成该演练:

  • Microsoft SQL Server 2000 或 Microsoft SQL Server 2005

  • Visual Studio Team System Database Edition

在开始此演练之前,请遵循演练:比较两个数据库的架构中的各个过程中的步骤。完成该演练后,您将得到以下两个数据库:

  • 源数据库 (Northwind),具有其原始结构,并且包含其原始数据。

  • 目标数据库 (EmptyNW),这是在用于比较架构的演练中创建的数据库。然后仅将 Northwind 数据库的架构应用于 EmptyNW。因此 EmptyNW 中不包含任何数据。

比较两个数据库的数据

本节包含两个过程。在第一个过程中,您将比较数据库并产生结果。在第二个过程中,您将检查这些结果。

比较两个数据库的数据

  1. 在“数据”菜单上,指向“数据比较”,然后单击“新建数据比较”。

    将出现“新建数据比较”向导。使用此向导配置数据比较。若要配置比较,必须指定每个数据库所在的服务器、连接到数据库时要使用的身份验证的类型以及要比较的每个数据库的名称。

    此外,“数据比较”窗口会在后台打开,Visual Studio 会自动为其分配一个名称,如 DataCompare1。

  2. 在“新建数据比较”向导中,选择源数据库 Northwind。在“源数据库”列表中,其名称以 Server.Northwind.dbo 的形式显示。

    如果“源数据库”列表为空,则单击“新建连接”。在“连接属性”对话框上,确定 Northwind 数据库所在的服务器以及连接到数据库时要使用的身份验证类型。然后,单击“确定”关闭“连接属性”对话框并返回到“新建数据比较”向导。

  3. 选择目标数据库 EmptyNW。在“目标数据库”列表中,其名称以 Server.EmptyNW.dbo 形式出现。

    如果“目标数据库”列表为空,则单击“新建连接”。在“连接属性”对话框上,确定 EmptyNW 数据库所在的服务器以及连接到数据库时要使用的身份验证类型。然后,单击“确定”关闭“连接属性”对话框并返回到“新建数据比较”向导。

  4. 如果想要限制比较结果中显示的记录,可以指定“高级数据比较选项”。对于此演练,请接受默认设置查看所有记录。

  5. 单击“下一步”。

    在“新建数据比较”向导的第二页,可以进一步调整对要比较的表和视图的选择。数据库的所有的表都列在“表”节点下。您可以展开单个表查看其中包含的列。默认情况下会选择所有表和列。这意味着会比较所有表和列。

    说明:

    如果想要对比较哪些表和视图进行自定义,可以单击“完成”而不是“下一步”。

  6. 若要排除特定表或列,请清除其复选框。若要包含特定表或列,请选中其复选框。

  7. 单击“完成”,开始比较。

    比较开始。

    说明:

    通过单击“数据比较”工具栏上的“停止”可以停止正在进行的数据比较操作。

    比较完成后,两个数据库之间的数据差异将出现在“数据比较”窗口的表中。有关如何查看这些结果的更多信息,请参见下面的过程。

    现在可以选择更新目标数据库中的数据以使其与源数据库匹配。有关更多信息,请参见更新目标数据库。

查看数据比较结果

  1. 单击“[dbo].[Orders]”行。

    “记录视图”窗格中的选项卡的名称更改为包含每种类型的记录的数目:“不同的记录(0)”、“只在源中(830)”、“只在目标中(0)”和“相同的记录(0)”。

  2. 单击“只在源中(830)”选项卡。

    在“只在源中(830)”选项卡上,每一行和每一列都与“[dbo].[Orders]”表中的一行或一列相对应。

    说明:

    您可以使用这些选项卡控制传播到目标数据库的数据。有关更多信息,请参见将更新写入目标数据库。

更新目标数据库

可以直接从“数据比较”窗口或通过使用 Transact SQL (T-SQL) 编辑器更新目标数据库中的数据。本节对这两种方法进行介绍。

比较数据后,差异会显示在“数据比较”窗口的网格中。对于“对象”列中的每个表或视图,都有一个指示该对象是否包括在更新操作中的复选框。这些列显示数据比较指示了哪些类型的哪些更改。在本例中,由于目标数据库中除默认对象外均为空,所以只有“只在源中”列显示将进行的更改。

通过使用数据比较选项写入更新

若要使用“数据比较”窗口中显示的更新操作更新目标数据库中的数据,请使用下面的过程:

  • 更新目标数据库

通过使用 T-SQL 编辑器写入更新

若要导出、检查和更改更新脚本然后使用该脚本更改目标数据库,请使用下面的过程:

  • 检查和运行同步脚本

更新目标数据库

更新目标数据库

  1. 在“数据比较”窗口中,单击“[dbo].[Products]”。

  2. 在详细信息窗格中,单击“只在目标中”。

    前两行名为“Chai”和“Chang”。

    详细信息窗格的状态栏上指出了源数据库中缺失的记录数以及将从目标数据库中删除的记录数。这两个数字是相同的。

  3. 清除“Chai”行的复选框。

    在详细信息窗格的状态栏上,要删除的记录数已经减一。它与源中缺失的记录数不再相同。

  4. 在“数据比较”窗口中,单击“写入更新”。

    便会实现“数据比较”窗口中列出的更新操作。此同步会更改目标以便与源匹配。

    说明:

    更新目标时,可以通过单击“停止写入目标”取消该操作。

检查和运行同步脚本

检查同步脚本

  1. 在“数据比较”窗口中,单击“导出到编辑器”。

    T-SQL 编辑器在连接模式下打开并显示 T-SQL 脚本。此窗口的名称类似于 Server.Northwind - DataUpdate_EmptyNW_1.sql。由于您具有此窗口的写入访问权限,因此可以更改脚本。如果进行了更改,请在完成时单击“保存”。

  2. 若要同步两个数据库的数据,请通过单击“执行 SQL”或按 F5 运行此脚本。

    说明:

    在此脚本运行期间,可以通过单击“取消查询执行”或按 Alt + Break 取消该操作。

请参见

任务

如何:比较两个数据库的架构

如何:比较两个数据库的数据

概念

Database Edition 术语概述

其他资源

比较数据库架构