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

更新:2007 年 11 月

在本演练中,将使用 Visual Studio Team System Database Edition 比较两个数据库的架构。架构比较操作还会从差异中生成一个数据定义语言 (DDL) 脚本。使用此文件可以同步目标的架构和源的架构。有关更多信息,请参见比较数据库架构

您将遵循本演练中的以下过程:

  • 创建一个空数据库。Northwind 数据库作为源,您需要创建一个空数据库作为目标。

  • 比较两个数据库的架构。通过比较架构,您将找出数据库之间的结构差异,将其显示在表中,并生成表示这些差异的 DDL 脚本。

  • 检查同步脚本。检查 DDL 脚本,并可以在运行之前对其进行编辑。

  • 更新目标数据库。运行 DDL 脚本更改目标的架构。

先决条件

必须安装下列产品:

  • Microsoft SQL Server 2000 或 Microsoft SQL Server 2005

  • Database Edition 

必须有两个数据库来进行比较。以 Northwind 数据库作为源开始。同时创建一个空数据库作为目标。下面的过程对此进行了说明。

创建一个空数据库

按照这些步骤创建一个空数据库。

创建空数据库

  1. 在“文件”菜单上,指向“新建”,然后单击“项目”。

    将出现“新建项目”对话框。

  2. 如果要创建 SQL Server 2000 数据库,请单击“SQL Server 2000 向导”。如果要创建 SQL Server 2005 数据库,请单击“SQL Server 2005 向导”。

  3. 在“名称”中,键入 EmptyNW。

  4. 接受其余字段的默认值并单击“确定”。

    将出现“新建数据库项目向导”。

  5. 单击“配置生成/部署”。

  6. 在“目标连接”中,单击“浏览”按钮并指定到要创建空数据库的数据库服务器的连接。

  7. 单击“完成”。

    即创建了一个名为“EmptyNW”的数据库项目并显示在解决方案资源管理器中。

  8. 在解决方案资源管理器中,单击数据库项目“EmptyNW”。

  9. 在“生成”菜单上单击“部署 项目名称”。

    数据库项目随即生成并部署到指定的服务器上。

比较两个数据库的架构

比较两个数据库的架构

  1. 打开 Database Edition。

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

    随即出现“架构比较”对话框。使用此对话框指定源和目标。在此对话框中,标识源和目标驻留的服务器、各个数据库的名称以及连接各个数据库时要使用的身份验证类型。

    而且,“架构比较”窗口会在后台打开,Database Edition 会自动为其分配一个名称,如 SchemaCompare1。

  3. 在“源数据库”下的“服务器名”中,键入 Northwind 数据库驻留的服务器的名称。

  4. 在“选择或输入一个数据库名”中,键入“Northwind”。

  5. 在“目标数据库名称”中,键入 EmptyNW 数据库驻留的服务器的名称。 此名称应与键入的源的服务器名称相同。

  6. 在“选择或输入一个数据库名”中,键入“EmptyNW”。

  7. 单击“完成”。

    架构比较开始。

    说明:

    通过打开“数据”菜单,指向“架构比较”,然后单击“停止架构比较”,可以停止正在进行的架构比较操作。

    说明:

    可以配置选项决定差异的具体内容以及更改更新脚本的创建方式。有关更多信息,请参见如何:设置比较数据库架构的选项

    比较完成后,两个数据库之间的结构差异将显示在“架构比较”窗口的表中。对于这两个数据库中的每个数据库对象,表中显示一行。数据库对象按类型组织:表、视图、存储过程、角色等。

更新目标数据库

要更新目标数据库架构,有两种选择。可以直接从“架构比较”窗口更新架构或通过使用 T-SQL 编辑器更新。本节对这两种方法进行介绍。

运行架构比较后,结构差异显示在“架构比较”窗口的表中。对于“Northwind (源 DB)”列中的每个对象,表都将在“更新操作”列中显示一个操作,此操作对同步两个数据库中的对象是必需的。在本例中,由于目标只包含默认对象,所以“状态”列多数为“新建”状态,“更新操作”列多数为“创建”操作。

将更新写入目标

可以使用“架构比较”窗口中列出的更新操作更新目标的架构。若要执行此任务,请按照 将更新写入目标数据库 中的步骤操作。

查看脚本,然后将更新写入目标

可以导出更新脚本,对其进行检查,进行可能的更改,然后用它同步目标数据库。若要执行这些任务,请按照 检查并执行同步脚本 中的步骤操作。

将更新写入目标数据库

将更新写入目标数据库

  1. (可选,但建议这样做)备份目标数据库。

    由于无法对某些架构更改进行事务处理,所以如果开始更新操作后取消,可能会丢失数据。例如,目标数据库中的表在准备重新创建过程中可能会被删除。如果此时取消更新,则可能会丢失该表。

  2. 在“架构比较”工具栏上,单击“写入更新”。

    “架构比较”窗口中列出的更新操作就会执行。此同步将更改目标的架构使其和源的架构匹配。

    说明:

    进行更新操作时,打开“数据”菜单,指向“架构比较”并单击“停止写入目标”,可以取消操作。

    说明:

    比较不会自动刷新。如果要再次运行比较以验证是否应用了选中的更新,必须单击“架构比较”工具栏上的“刷新”按钮。

检查并执行同步脚本

检查同步脚本

  1. 在“数据”菜单上,指向“架构比较”,然后指向“导出到”并单击“编辑器”。也可以单击“架构比较”工具栏上的“导出到编辑器”。

    T-SQL 编辑器在连接模式下打开并显示 T-SQL 同步脚本。此窗口的名称类似于 Server.Northwind - SchemaUpdate_EmptyNW_1.sql。 其中显示 T-SQL 脚本。脚本位于“我的文档/Visual Studio 2005/My Projects”文件夹下的文件中。由于您具有此窗口的读写访问权限,因此可以更改脚本。如果更改脚本,请打开“文件”菜单,然后单击“保存”。

  2. 若要同步两个数据库的架构,请通过单击“架构比较”工具栏上的“执行 SQL”或按 F5 运行此脚本。

    说明:

    比较不会自动刷新。如果要再次运行比较以验证是否应用了选中的更新,必须单击“架构比较”工具栏上的“刷新”按钮。

后续步骤

现在可以比较两个数据库内的数据。有关更多信息,请参见如何:比较两个数据库的数据

请参见

任务

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

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

概念

Database Edition 术语概述

其他资源

比较数据库数据