开始大型数据库的团队开发
在使用 Visual Studio 管理对数据库架构所做的更改之前,需要首先创建数据库项目、服务器项目或数据层应用程序项目,然后从要管理的数据库中导入对象和设置。 如果您要管理对非常大的数据库的更改,可能需要将这些对象划分到多个数据库项目中。 这样做可以控制哪些团队或开发人员可以添加、修改或删除不同数据库部分中的代码。
可以通过两种方法将数据库分为多个较小的部分:
复合项目 - 可以在两个或更多通过数据库项目引用链接在一起的数据库项目中(或者,可以在同一解决方案中引用已编译的 .dbschema 文件)对您的数据库的各个部分进行定义。 在部署包含数据库项目引用的项目时,将同时部署该项目所引用的所有项目。 复合项目中的项目之间不能存在循环引用。
分部项目 - 可以通过 .files 文件的形式导出数据库项目的一部分。 然后可创建另一个数据库项目,并包括该分部项目(.files 文件)。 然后,您可以设置对原始文件的写权限,以限制对这些文件进行更改。 因此,处理第二个项目的开发人员创建的其他对象可以引用这些只读对象,但不能修改它们。 在生成和部署第二个项目时,会生成数据库的完整副本,包括只读部分。 分部项目中可以存在循环引用。
每种方法都有限制,本主题后面将进行详细介绍。
指定数据库项目的类型
在创建数据库项目时,需要指定与 SQL Server 版本对应的项目类型。 例如,如果要管理的数据库基于 SQL Server 2005,则需指定**“SQL Server 2005 数据库项目”或“SQL Server 2005 向导”**。 如果使用向导,则不仅能创建项目,同时还能配置某些生成和部署设置,并导入数据库对象和设置。
导入数据库对象和设置
创建项目之后,可以从数据库实例或脚本导入对象和设置。 从脚本导入数据库时,将验证其对象定义,并将无法分析的语句放入 ScriptsIgnoredOnImport.sql 文件中。 如果导入的对象定义引用了不再存在的对象,则必须先解决这些错误,然后才可以生成和部署项目。 例如,您导入的存储过程可能引用了不再存在的表。 若要解决该错误,可以删除该存储过程。
导入大型架构时,可能需要花费大量时间来解决这类错误。 然而,团队成员在 Visual Studio 高级专业版 中更新架构时,不能在不知情的情况下引入其他同类错误。 在他们修改和保存任何对象定义时,需验证所有更改,以便团队成员可以立即修复错误,避免将这些错误部署到实时数据库中。 解决对象定义中的警告之后,还应考虑分析数据库代码是否存在设计问题、命名问题和性能问题。 有关更多信息,请参见分析数据库代码以提高代码质量。
常规任务
常规任务 |
支持内容 |
---|---|
了解有关数据库项目以及分部和复合项目限制的更多信息:您可以了解有关如何使用数据库项目管理架构更改的基本概念。 |
|
进行动手练习:可以按照介绍性演练操作,熟悉如何使用分部项目或复合项目对数据库项目进行分区。 |
|
将现有数据库架构置于版本控制之下:可以使用数据库项目向导创建项目、配置项目设置以及导入架构。 如果希望以后导入架构,或是如果无权访问要从中导入架构的数据库,则还可以创建空项目。 导入架构之后,可以将项目添加到版本控制。 |
|
对数据库项目进行分区以共享对象定义:可以从一个数据库项目导出对象定义并在其他项目中重用这些定义。 团队成员即使可以访问向其中导入分部项目定义的项目,也不能修改导入的对象。 因此,您可以将更改控制到数据库代码的子集。 |
|
添加引用以创建复合项目:通过添加对数据库项目的引用但不指定服务器和数据库变量的值,可以创建复合项目。 在部署项目时,将会同时部署该项目所引用的所有项目。 |
分部项目的用法和限制
下图演示了使用分部项目的典型方案:
在 Database Edition 中使用分部项目
此示例中的项目包含两组对象。 您希望其他开发人员或团队向项目添加存储过程,但要防止他们无意中更改其他对象。 若要使用分部项目实现此目标,必须执行下列步骤:
按架构或按对象类型将对象组导出到 A.files 和 B.files 中。
创建第二个数据库项目,其他开发人员或团队将在其中创建存储过程(有时称为“sproc”)。
将导出的分部项目 A.files 和 B.files 导入到第二个数据库项目中。
限制对导入的分部项目中的对象的源代码管理权限,使之仅允许只读访问。
此时,其他开发人员或团队可以添加对象,生成并部署他们的项目以测试他们所做的更改。
如果您的数据库包含具有长名称的对象,或是用于创建数据库项目的路径过长,则您可能无法将分部项目(.files 文件)导入另一个数据库项目。 如果遵循以下建议,则可以避免这些问题:
在具有较短路径名称的文件夹中创建数据库项目。 例如“D:\MyProjects”可能要好于“C:\Documents and Settings\UserName\My Documents\Visual Studio 2008\Projects”。
避免使用很长的数据库对象名称。 外键是最常见的具有长名称的对象类型。 如果外键的名称为“FK_ReferencingTable_ReferencedTable_ReferencedColumn1_ReferencedColumn2”,则在尝试导入包含该键定义的分部项目时可能会出现错误。
复合项目的用法和限制
下图演示了使用复合项目的典型方案:
在 Database Edition 中使用复合项目
在此示例中,您可以创建一个包含架构定义的数据库项目。 然后创建包含表和视图定义的第二个数据库项目,以及包含所有存储过程定义的第三个数据库项目。 第三个项目(数据库项目 C)引用另外两个数据库项目。 在生成和部署第三个项目时,也会自动部署另外两个项目。
如果使用复合项目,则必须能够独立生成和部署每个项目。 在复合项目中的项目之间不能存在循环依赖关系。 可以使用复合项目按对象类型对数据库进行分区。 例如,可以将架构放入一个项目,将表和视图放入另一个项目,而将存储过程放入第三个项目。
相关方案
开始数据库的团队开发
描述如何在数据库项目中创建数据库架构的脱机表示形式,以及如何将项目添加到版本控制中。开始对引用其他数据库的数据库进行团队开发
描述如何创建数据库架构的脱机表示形式、定义对其他数据库的引用、为目标部署环境指定变量值以及将项目添加到版本控制中。开始引用 SQLCLR 对象的数据库的团队开发
描述如何创建数据库架构的脱机表示形式、定义对包含 SQL 公共语言运行时 (CLR) 对象的程序集的引用、定义引用这些 SQLCLR 对象的数据库对象以及将项目添加到版本控制中。对使用 XML 架构集合的数据库开始团队开发
描述如何创建数据库架构的脱机表示形式、定义对 XSD 文件的引用、定义使用该文件的 XML 架构集合、定义使用 XML 架构集合的列以及将项目添加到版本控制中。对引用共享服务器对象的数据库开始团队开发
描述如何创建数据库架构的脱机表示形式、定义对共享服务器项目的引用、添加对服务器项目中所定义的对象的引用以及将数据库项目添加到版本控制中。