演练:比较数据库的架构和数据库项目的架构
更新:2007 年 11 月
在本演练中,通过使用 Visual Studio Team System Database Edition 对数据库项目的架构与数据库的架构进行比较。
根据您的团队使用数据库项目和数据库的方式,您可能需要按一个方向或按另一个方向复制架构更改。以下是典型方案:
项目是源,数据库是目标。可以使用数据库项目来开发或维护数据库。在项目中进行架构更改后,可以将这些更改复制到位于测试服务器上的数据库中。随后,团队可以将该数据库部署到成品服务器上。
在本演练中执行的架构比较操作从架构差异生成数据定义语言 (DDL) 脚本。然后可以使用此脚本将所有或部分数据库项目应用于数据库。有关更多信息,请参见将更改从项目传播到数据库。
数据库是源,项目是目标。可能会在成品数据库的架构中发现错误,或者架构可能过时并需要更新。此发现可能会导致对数据库应用紧急更新。若要使项目与数据库保持同步,则可以将由紧急更新导致的架构更改导入数据库项目。有关更多信息,请参见如何:将更新从数据库导入数据库项目。
本演练涉及以下任务:
安装阶段
创建一个数据库项目。新项目最初为空。
对数据库架构和项目架构进行比较。在进行比较时,可以将数据库项目指定为源,将数据库指定为目标。完成比较后,此配置允许您将架构更新从数据库项目写入数据库。
说明: 也可以将更改从源数据库传播到目标数据库项目。有关更多信息,请参见如何:将更新从数据库导入数据库项目。
将数据库的架构导入到项目中。现在,数据库和项目具有相同的架构。
生产阶段
向数据库项目中添加表。您将添加一个名为 InternationalShippers 的表,其中包含三列。
再次比较这两种架构。InternationalShippers 表在数据库项目中显示为一个新表。
将更改从项目传播到数据库。可以选择将新的 InternationalShippers 表传播到 Northwind 数据库。按照此过程操作将覆盖 Northwind 示例数据库的部分内容。
先决条件
若要完成本演练,您需要:
Microsoft SQL Server 2000 或 Microsoft SQL Server 2005
Microsoft Visual Studio 2005Database Edition
Northwind 数据库
安装阶段
创建一个数据库项目
创建数据库项目
在“文件”菜单上,指向“新建”,然后单击“项目”。
此时将打开“新建项目”对话框。
在“项目类型”下,展开“数据库项目”,然后单击“Microsoft SQL Server”。
在“模板”下,单击“SQL Server 2005”。
在“名称”框中键入 Northwind_Project,然后单击“确定”。
Northwind_Project 将打开并显示在“解决方案资源管理器”中。该项目是一个空项目。
说明: 通过使用 Team Edition for Database Professionals,还可以创建非空项目。有关更多信息,请参见如何:创建数据库项目。
比较数据库架构和项目架构
比较这两种架构
(可选)配置影响架构比较方式的选项。有关更多信息,请参见选项(数据库工具/架构比较)和如何:设置比较数据库架构的选项。
在“数据”菜单上,指向“架构比较”,然后单击“新建架构比较”。
将打开“新建架构比较”对话框。在“源架构”下,将出现 Northwind_Project 项目。
在“目标架构”下,确保单击“数据库”,然后单击 Northwind 数据库。
说明: 如果“数据库”下的列表为空,请单击“新建连接”。在“连接属性”对话框中,连接到包含 Northwind 数据库的数据库服务器,然后单击“确定”。如果“数据库”下的列表不是空的,并且您使用 SQL Server 身份验证连接到 Northwind 数据库,则会出现“连接到 SQL Server”对话框。必须指定您的凭据才能连接到数据库。
在“新建架构比较”对话框中,单击“确定”。
Northwind 数据库的架构将与 Northwind_Project 项目的架构进行比较。比较结果显示在“架构比较”窗口中。对于存在于 Northwind 数据库但不存在于 Northwind_Project 项目中的每个对象,更新操作将列出为“删除”。
将数据库架构导入项目
导入数据库架构
在“视图”菜单上单击“架构视图”。
“架构视图”将打开并显示 Northwind_Project 项目的架构。
右击 Northwind_Project,然后单击“导入数据库架构”。
“导入数据库向导”将打开。
在“源数据库连接”下,单击 Northwind 数据库。
单击“完成”。
数据库的架构将导入到项目中。这两种架构现在完全一样了。
说明: 数据库项目继承了 Northwind 数据库的许多属性。若要显示这些属性,请在“解决方案资源管理器”中右击 Northwind_Project,然后单击“属性”。导入的设置包括“项目设置”页上的“默认排序规则”和“数据库属性”页上的“杂项”设置。
若要验证这两种架构是否相同,请单击“架构比较”工具栏上的“刷新”。
将再次比较这两种架构。对于相同的架构对象,更新操作显示为“跳过”。
生产阶段
向数据库项目中添加表
向项目中添加表
在“视图”菜单上单击“架构视图”。
“架构视图”将打开并显示 Northwind_Project 项目的架构。
在“架构视图”中,展开 Northwind_Project 节点。
右击“表”,指向“添加”,然后单击“表”。
“添加新项 - Northwind_Project”对话框将打开。
在“模板”下,单击“表”。
在“名称”框中键入 InternationalShippers,然后单击“添加”。
名为 InternationalShippers 的表即被添加到 Northwind_Project 项目中。表定义显示在 Transact-SQL (T-SQL) 编辑器中。
将 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]
单击“保存 InternationalShippers.table.sql”。
在“架构视图”中右击 InternationalShippers 表,然后单击“在解决方案资源管理器中查看文件”。
InternationalShippers.sql 文件将在“解决方案资源管理器”中突出显示。
按 F4。
“属性”窗口将出现并显示 InternationalShippers.table.sql 文件的属性。请注意,应将**“生成操作”设置为“生成”。通过将“生成操作”**属性设置为“生成”,可以指明该文件包含数据库对象的定义,因此应对该文件进行分析和验证。
比较这两种架构
比较这两种架构
单击“架构比较”选项卡以重新显示最新比较的结果。
在“架构比较”工具栏上,单击“刷新”。
Northwind 数据库的架构将与已更改的 Northwind_Project 项目的架构进行比较。比较结果显示在“架构比较”窗口中。在 Northwind_Project 列中,将显示 [dbo].[InternationalShippers] 表。
新表的状态为“新建”,其更新操作为“创建”。如果您现在传播更改,则将在目标数据库中创建该表。有关更多信息,请参见以下过程。
将更改从项目传播到数据库
在此过程中,可以将新的 InternationalShippers 表传播到 Northwind 数据库。有关更多信息,请参见如何:同步数据库架构。
警告: |
---|
此过程的描述仅用于说明目的。您可能不想遵循此过程中的步骤,因为按照此过程操作会覆盖 Northwind 示例数据库的部分内容。仅当不需要保持 Northwind 的原始副本时才使用此过程。另外,您可以对 Northwind 数据库的副本执行此过程。 |
将更改传播到目标数据库
在“架构比较”窗口中,单击“写入更新”。
将执行“架构比较”窗口中列出的更新操作,该窗口中包括针对 InternationalShippers 表的“创建”更新操作。此同步可以更改目标数据库的架构,使其与源数据库项目的架构匹配。
说明: 在更新操作的执行过程中,您可以通过打开“数据”菜单,指向“架构比较”,再单击“停止写入目标”来取消此操作。
警告: 由于无法对某些架构更改进行事务处理,因此如果您取消更新操作,则可能会丢失数据。例如,目标数据库中的表在准备重新创建过程中可能会被删除。如果此时取消更新,则可能会丢失该表。如果发生此类数据丢失,您将需要重新比较架构。