演练:使用复合项目对数据库项目进行分区

可以使用复合项目更好地管理大型数据库,方法是将数据库分区为相互依赖的一组共同部署的数据库项目。 本演练阐释了以下任务:

  • 创建一个数据库项目,在其中定义数据库架构。

  • 创建另一个数据库项目,在其中定义特定架构的表。

  • 创建第三个数据库项目,在其中定义特定架构的存储过程。

  • 配置、生成和部署第三个项目及其依赖项。

系统必备

必须已安装 Visual Studio,并且能够访问运行 SQL Server 的服务器。

为架构创建数据库项目

创建源数据库项目

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

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

  2. 在**“已安装的模板”下,展开“数据库”节点,然后单击“SQL Server”**。

    提示

    如果您使用的是 Visual Studio 专业版,请在“已安装的模板”下进行查看,依次展开“数据库”节点和“SQL Server”节点,然后单击“高级”

  3. 在模板列表中单击**“SQL Server 2008 数据库项目”**。

    提示

    如果您的目标数据库具有不同版本的 SQL Server,则可以单击与您的版本匹配的项目类型。

  4. 在**“名称”**中,键入 MySchemaProject。

  5. 在**“位置”**中,键入或浏览至要创建数据库项目的位置的路径。

  6. 在**“解决方案名称”中,键入 MyCompositeSolution 并单击“确定”**。

    数据库项目会创建并出现在**“解决方案资源管理器”**中。 接下来,您将在项目中定义架构。

定义架构

  1. 在**“视图”菜单上,单击“数据库架构视图”**。

  2. 展开**“MySchemaProject”节点,展开“架构”节点,右击“架构”节点,指向“添加”,然后单击“架构”**。

    **“添加新项”**对话框打开。

  3. 在**“模板”列表中,单击“架构”**。

  4. 在**“名称”中,键入 Person,然后单击“添加”**。

  5. 在**“文件”菜单上,单击“全部保存”**。

    接下来将生成项目。

生成架构项目

  • 在**“解决方案资源管理器”中,右击“MySchemaProject”节点并单击“生成”**。

    提示

    必须生成项目,以便能够在接下来的过程中解析对项目中定义的架构的引用。

    接下来,将为 Person 架构中的表创建项目。

为表创建数据库项目

创建源数据库项目

  1. 在**“文件”菜单上指向“添加”并单击“新建项目”**。

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

  2. 在**“已安装的模板”下,展开“数据库”节点,然后单击“SQL Server”**。

    提示

    如果您使用的是 Visual Studio 专业版,请在“已安装的模板”下进行查看,依次展开“数据库”节点和“SQL Server”节点,然后单击“高级”

  3. 在**“模板”列表中单击“SQL Server 2008 数据库项目”**。

  4. 在**“名称”**中,键入 MyTablesProject。

  5. 在**“位置”中,键入或浏览至要创建数据库项目的位置的路径,然后单击“确定”**。

    数据库项目会创建并出现在**“解决方案资源管理器”**中。

    接下来,在定义表项目中的表之前添加对架构项目的引用。

添加对架构项目的引用

  1. 在**“解决方案资源管理器”中,展开“MyTablesProject”节点,右击“引用”节点,然后单击“添加数据库引用”**。

    **“添加数据库引用”**对话框将打开。

  2. 在**“数据库引用”中,验证是否指定了“当前解决方案中的数据库项目”**。

    提示

    如果此解决方案不包含引用的项目,则改为单击“数据库项目架构(.dbschema)”。 例如,若要防止开发存储过程的团队成员无意中更改架构或表项目,则可以使用此方法。

  3. 单击**“MySchemaProject”**。

    重要说明重要事项

    在复合项目中定义引用时,不要指定服务器变量及值或是数据库变量及值。 因为未定义任何变量,所以会假定引用的项目共享当前项目的目标服务器和数据库。

  4. 单击**“确定”**。

    接下来,将在新架构中创建两个表。

在 Person 架构中定义表

  1. 在**“视图”菜单上,单击“数据库架构视图”**。

  2. 在**“架构视图”工具栏上,单击“外部元素”**。

    由于 Person 架构在其他项目中进行定义,因此您必须执行此操作。

  3. 在**“架构视图”中,展开“MyTablesProject”节点,展开“架构”节点,右击“Person”节点,指向“添加”,然后单击“表”**。

    提示

    为使本演练保持简洁,将不更新表定义。

    **“添加新项”**对话框打开。

  4. 在**“模板”列表中,单击“表”**。

  5. 在**“名称”**中,键入 Contacts。

  6. 右击**“Person”节点,指向“添加”,然后单击“表”**。

    **“添加新项”**对话框打开。

  7. 在**“模板”列表中,单击“表”**。

  8. 在**“名称”**中,键入 StateProvince。

    接下来将生成数据库项目。

生成表项目

  • 在**“解决方案资源管理器”中,右击“MyTablesProject”节点并单击“生成”**。

    接下来,将为存储过程创建第三个数据库项目。

为存储过程创建数据库项目

为存储过程创建数据库项目

  1. 在**“文件”菜单上指向“添加”并单击“新建项目”**。

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

  2. 在**“已安装的模板”下,展开“数据库”节点,然后单击“SQL Server”**。

    提示

    如果您使用的是 Visual Studio 专业版,请在“已安装的模板”下进行查看,依次展开“数据库”节点和“SQL Server”节点,然后单击“高级”

  3. 在**“模板”列表中单击“SQL Server 2008 数据库项目”**。

  4. 在**“名称”**中,键入 MySprocProject。

  5. 在**“位置”中,键入或浏览至要创建数据库项目的位置的路径,然后单击“确定”**。

    数据库项目会创建并出现在**“解决方案资源管理器”**中。

    接下来,将修改存储过程项目,使该项目引用架构项目。

添加对架构项目的引用

  1. 在**“解决方案资源管理器”中,展开“MySprocProject”节点,右击“引用”节点,然后单击“添加数据库引用”**。

    **“添加数据库引用”**对话框将打开。

  2. 在**“数据库引用”中,验证是否指定了“当前解决方案中的数据库项目”**。

  3. 单击**“MySchemaProject”**。

    重要说明重要事项

    在复合项目中定义引用时,不要指定服务器变量及值或是数据库变量及值。 因为未定义任何变量,所有您引用的所有项目都会部署到同一目标服务器和数据库。

  4. 单击**“确定”**。

    接下来,将修改存储过程项目,使该项目引用 MyTablesProject 项目。

添加对表项目的引用

  1. 在**“解决方案资源管理器”中,右击 MySprocProject 节点下的“引用”节点,然后单击“添加数据库引用”**。

    **“添加数据库引用”**对话框将打开。

  2. 在**“数据库引用”中,验证是否指定了“当前解决方案中的数据库项目”**。

  3. 单击**“MyTablesProject”**。

    重要说明重要事项

    在复合项目中定义引用时,不要指定服务器变量及值或是数据库变量及值。 因为未定义任何变量,所有您引用的所有项目都会部署到同一目标服务器和数据库。

  4. 单击**“确定”**。

    接下来将创建架构中的存储过程。

定义引用 Person 架构中的表的存储过程

  1. 在**“视图”菜单上,单击“数据库架构视图”**。

  2. 在**“架构视图”工具栏上,单击“外部元素”**。

    由于 Person 架构在其他项目中进行定义,因此您必须执行此操作。

  3. 在**“架构视图”中,展开 MySprocProject 节点,展开“架构”节点,右击“Person”节点,指向“添加”,然后单击“存储过程”**。

    **“添加新项”**对话框打开。

  4. 在**“名称”中,键入 uspCountContacts,然后单击“添加”**。

    该存储过程会添加到项目中,并出现在 Transact-SQL 编辑器中。

  5. 在 Transact-SQL 编辑器中,更新该存储过程以匹配下面的代码:

    CREATE PROCEDURE [Person].[uspCountContacts]
    AS
    SELECT COUNT(*) FROM [Person].[Contacts]
    
  6. 在**“文件”菜单上,单击“全部保存”**。

    接下来,将配置、生成并部署 MySprocProject 及其依赖项。

配置、生成和部署数据库

配置 MySchemaProject 以进行部署

  1. 在**“解决方案资源管理器”中,右击“MySchemaProject”节点并单击“属性”**。

  2. 在属性页上,单击**“部署”**选项卡。

  3. 在**“部署操作”列表中,单击“创建部署脚本(**.sql)并部署到数据库”

  4. 单击**“目标数据库设置”旁边的“编辑”**。

  5. 指定与部署此数据库项目所用目标服务器的连接,然后单击**“确定”**。

  6. 在**“目标数据库名称”**中,键入 MySprocProject。

    重要说明重要事项

    必须为组成复合项目的所有三个项目指定相同的目标数据库名称,否则部署会失败。

  7. 在**“文件”菜单上,单击“全部保存”**。

    接下来,将配置 MyTablesProject 的属性。

配置 MyTablesProject 以进行部署

  1. 在**“解决方案资源管理器”中,右击“MyTablesProject”节点并单击“属性”**。

  2. 在属性页上,单击**“部署”**选项卡。

  3. 在**“部署操作”列表中,单击“创建部署脚本(**.sql)并部署到数据库”

  4. 单击**“目标数据库设置”旁边的“编辑”**。

  5. 指定与部署此数据库项目所用目标服务器的连接,然后单击**“确定”**。

  6. 在**“目标数据库名称”**中,键入 MySprocProject。

    重要说明重要事项

    必须为组成复合项目的所有三个项目指定相同的目标数据库名称,否则部署会失败。

  7. 在**“文件”菜单上,单击“全部保存”**。

    接下来,将配置 MySprocProject 的属性。

配置 MySprocProject 以进行部署

  1. 在**“解决方案资源管理器”中,右击“MySprocProject”节点并单击“属性”**。

  2. 在属性页上,单击**“部署”**选项卡。

  3. 在**“部署操作”列表中,单击“创建部署脚本(**.sql)并部署到数据库”

  4. 单击**“目标数据库设置”旁边的“编辑”**。

  5. 指定与部署此数据库项目所用目标服务器的连接,然后单击**“确定”**。

  6. 在**“目标数据库名称”**中,键入 MySprocProject。

    重要说明重要事项

    必须为组成复合项目的所有三个项目指定相同的目标数据库名称,否则部署会失败。

  7. 在**“文件”菜单上,单击“全部保存”**。

    接下来将生成数据库项目。

生成并部署开发数据库

  1. 在**“解决方案资源管理器”中,右击“MySprocProject”节点并单击“生成”**。

  2. 在**“解决方案资源管理器”中,右击“MySprocProject”节点并单击“部署”**。

    您的数据库随即生成,并与其依赖项一起部署到指定的目标服务器。

后续步骤

可以使用此方法同时处理数据库的较小部分。 如果您希望处理存储过程的开发人员与表和架构定义隔离,则也可以引用 .dbschema 文件(而不是数据库项目)。

请参见

概念

开始大型数据库的团队开发