演练:比较数据库的架构和数据库项目的架构

更新:2007 年 11 月

在本演练中,通过使用 Visual Studio Team System Database Edition 对数据库项目的架构与数据库的架构进行比较。

根据您的团队使用数据库项目和数据库的方式,您可能需要按一个方向或按另一个方向复制架构更改。以下是典型方案:

  • 项目是源,数据库是目标。可以使用数据库项目来开发或维护数据库。在项目中进行架构更改后,可以将这些更改复制到位于测试服务器上的数据库中。随后,团队可以将该数据库部署到成品服务器上。

    在本演练中执行的架构比较操作从架构差异生成数据定义语言 (DDL) 脚本。然后可以使用此脚本将所有或部分数据库项目应用于数据库。有关更多信息,请参见将更改从项目传播到数据库。

  • 数据库是源,项目是目标。可能会在成品数据库的架构中发现错误,或者架构可能过时并需要更新。此发现可能会导致对数据库应用紧急更新。若要使项目与数据库保持同步,则可以将由紧急更新导致的架构更改导入数据库项目。有关更多信息,请参见如何:将更新从数据库导入数据库项目

本演练涉及以下任务:

安装阶段

  1. 创建一个数据库项目。新项目最初为空。

  2. 对数据库架构和项目架构进行比较。在进行比较时,可以将数据库项目指定为源,将数据库指定为目标。完成比较后,此配置允许您将架构更新从数据库项目写入数据库。

    说明:

    也可以将更改从源数据库传播到目标数据库项目。有关更多信息,请参见如何:将更新从数据库导入数据库项目

  3. 将数据库的架构导入到项目中。现在,数据库和项目具有相同的架构。

生产阶段

  1. 向数据库项目中添加表。您将添加一个名为 InternationalShippers 的表,其中包含三列。

  2. 再次比较这两种架构。InternationalShippers 表在数据库项目中显示为一个新表。

  3. 将更改从项目传播到数据库。可以选择将新的 InternationalShippers 表传播到 Northwind 数据库。按照此过程操作将覆盖 Northwind 示例数据库的部分内容。

先决条件

若要完成本演练,您需要:

  • Microsoft SQL Server 2000 或 Microsoft SQL Server 2005

  • Microsoft Visual Studio 2005Database Edition 

  • Northwind 数据库

安装阶段

创建一个数据库项目

创建数据库项目

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

    此时将打开“新建项目”对话框。

  2. 在“项目类型”下,展开“数据库项目”,然后单击“Microsoft SQL Server”。

  3. 在“模板”下,单击“SQL Server 2005”。

  4. 在“名称”框中键入 Northwind_Project,然后单击“确定”。

    Northwind_Project 将打开并显示在“解决方案资源管理器”中。该项目是一个空项目。

    说明:

    通过使用 Team Edition for Database Professionals,还可以创建非空项目。有关更多信息,请参见如何:创建数据库项目

比较数据库架构和项目架构

比较这两种架构

  1. (可选)配置影响架构比较方式的选项。有关更多信息,请参见选项(数据库工具/架构比较)如何:设置比较数据库架构的选项

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

    将打开“新建架构比较”对话框。在“源架构”下,将出现 Northwind_Project 项目。

  3. 在“目标架构”下,确保单击“数据库”,然后单击 Northwind 数据库。

    说明:

    如果“数据库”下的列表为空,请单击“新建连接”。在“连接属性”对话框中,连接到包含 Northwind 数据库的数据库服务器,然后单击“确定”。如果“数据库”下的列表不是空的,并且您使用 SQL Server 身份验证连接到 Northwind 数据库,则会出现“连接到 SQL Server”对话框。必须指定您的凭据才能连接到数据库。

  4. 在“新建架构比较”对话框中,单击“确定”。

    Northwind 数据库的架构将与 Northwind_Project 项目的架构进行比较。比较结果显示在“架构比较”窗口中。对于存在于 Northwind 数据库但不存在于 Northwind_Project 项目中的每个对象,更新操作将列出为“删除”。

将数据库架构导入项目

导入数据库架构

  1. 在“视图”菜单上单击“架构视图”。

    “架构视图”将打开并显示 Northwind_Project 项目的架构。

  2. 右击 Northwind_Project,然后单击“导入数据库架构”。

    “导入数据库向导”将打开。

  3. 在“源数据库连接”下,单击 Northwind 数据库。

  4. 单击“完成”。

    数据库的架构将导入到项目中。这两种架构现在完全一样了。

    说明:

    数据库项目继承了 Northwind 数据库的许多属性。若要显示这些属性,请在“解决方案资源管理器”中右击 Northwind_Project,然后单击“属性”。导入的设置包括“项目设置”页上的“默认排序规则”和“数据库属性”页上的“杂项”设置。

  5. 若要验证这两种架构是否相同,请单击“架构比较”工具栏上的“刷新”。

    将再次比较这两种架构。对于相同的架构对象,更新操作显示为“跳过”。

生产阶段

向数据库项目中添加表

向项目中添加表

  1. 在“视图”菜单上单击“架构视图”。

    “架构视图”将打开并显示 Northwind_Project 项目的架构。

  2. 在“架构视图”中,展开 Northwind_Project 节点。

  3. 右击“表”,指向“添加”,然后单击“表”。

    “添加新项 - Northwind_Project”对话框将打开。

  4. 在“模板”下,单击“表”。

  5. 在“名称”框中键入 InternationalShippers,然后单击“添加”。

    名为 InternationalShippers 的表即被添加到 Northwind_Project 项目中。表定义显示在 Transact-SQL (T-SQL) 编辑器中。

  6. 将 InternationalShippers.table.sql 中的 SQL 脚本更改为以下内容:

    CREATE TABLE [dbo].[InternationalShippers]
    (
    [ShipperID] [int] NOT NULL IDENTITY(1,1),
    [CompanyName] [nvarchar] (40) NOT NULL,
    [Region] [nvarchar] (40) NOT NULL,
    [Phone] [nvarchar] (24) NULL
    ) ON [PRIMARY]
    
  7. 单击“保存 InternationalShippers.table.sql”。

  8. 在“架构视图”中右击 InternationalShippers 表,然后单击“在解决方案资源管理器中查看文件”。

    InternationalShippers.sql 文件将在“解决方案资源管理器”中突出显示。

  9. 按 F4。

    “属性”窗口将出现并显示 InternationalShippers.table.sql 文件的属性。请注意,应将**“生成操作”设置为“生成”。通过将“生成操作”**属性设置为“生成”,可以指明该文件包含数据库对象的定义,因此应对该文件进行分析和验证。

比较这两种架构

比较这两种架构

  1. 单击“架构比较”选项卡以重新显示最新比较的结果。

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

    Northwind 数据库的架构将与已更改的 Northwind_Project 项目的架构进行比较。比较结果显示在“架构比较”窗口中。在 Northwind_Project 列中,将显示 [dbo].[InternationalShippers] 表。

    新表的状态为“新建”,其更新操作为“创建”。如果您现在传播更改,则将在目标数据库中创建该表。有关更多信息,请参见以下过程。

将更改从项目传播到数据库

在此过程中,可以将新的 InternationalShippers 表传播到 Northwind 数据库。有关更多信息,请参见如何:同步数据库架构

警告:

此过程的描述仅用于说明目的。您可能不想遵循此过程中的步骤,因为按照此过程操作会覆盖 Northwind 示例数据库的部分内容。仅当不需要保持 Northwind 的原始副本时才使用此过程。另外,您可以对 Northwind 数据库的副本执行此过程。

将更改传播到目标数据库

  • 在“架构比较”窗口中,单击“写入更新”。

    将执行“架构比较”窗口中列出的更新操作,该窗口中包括针对 InternationalShippers 表的“创建”更新操作。此同步可以更改目标数据库的架构,使其与源数据库项目的架构匹配。

    说明:

    在更新操作的执行过程中,您可以通过打开“数据”菜单,指向“架构比较”,再单击“停止写入目标”来取消此操作。

    警告:

    由于无法对某些架构更改进行事务处理,因此如果您取消更新操作,则可能会丢失数据。例如,目标数据库中的表在准备重新创建过程中可能会被删除。如果此时取消更新,则可能会丢失该表。如果发生此类数据丢失,您将需要重新比较架构。

请参见

任务

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

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

概念

Database Edition 术语概述

其他资源

比较数据库架构

比较数据库数据