演练:使用复合项目对数据库项目进行分区
可以使用复合项目更好地管理大型数据库,方法是将数据库分区为相互依赖的一组共同部署的数据库项目。 本演练阐释了以下任务:
创建一个数据库项目,在其中定义数据库架构。
创建另一个数据库项目,在其中定义特定架构的表。
创建第三个数据库项目,在其中定义特定架构的存储过程。
配置、生成和部署第三个项目及其依赖项。
系统必备
必须已安装 Visual Studio,并且能够访问运行 SQL Server 的服务器。
为架构创建数据库项目
创建源数据库项目
在**“文件”菜单上指向“新建”,再单击“项目”**。
将打开**“新建项目”**对话框。
在**“已安装的模板”下,展开“数据库”节点,然后单击“SQL Server”**。
提示
如果您使用的是 Visual Studio 专业版,请在“已安装的模板”下进行查看,依次展开“数据库”节点和“SQL Server”节点,然后单击“高级”。
在模板列表中单击**“SQL Server 2008 数据库项目”**。
提示
如果您的目标数据库具有不同版本的 SQL Server,则可以单击与您的版本匹配的项目类型。
在**“名称”**中,键入 MySchemaProject。
在**“位置”**中,键入或浏览至要创建数据库项目的位置的路径。
在**“解决方案名称”中,键入 MyCompositeSolution 并单击“确定”**。
数据库项目会创建并出现在**“解决方案资源管理器”**中。 接下来,您将在项目中定义架构。
定义架构
在**“视图”菜单上,单击“数据库架构视图”**。
展开**“MySchemaProject”节点,展开“架构”节点,右击“架构”节点,指向“添加”,然后单击“架构”**。
**“添加新项”**对话框打开。
在**“模板”列表中,单击“架构”**。
在**“名称”中,键入 Person,然后单击“添加”**。
在**“文件”菜单上,单击“全部保存”**。
接下来将生成项目。
生成架构项目
在**“解决方案资源管理器”中,右击“MySchemaProject”节点并单击“生成”**。
提示
必须生成项目,以便能够在接下来的过程中解析对项目中定义的架构的引用。
接下来,将为 Person 架构中的表创建项目。
为表创建数据库项目
创建源数据库项目
在**“文件”菜单上指向“添加”并单击“新建项目”**。
将打开**“新建项目”**对话框。
在**“已安装的模板”下,展开“数据库”节点,然后单击“SQL Server”**。
提示
如果您使用的是 Visual Studio 专业版,请在“已安装的模板”下进行查看,依次展开“数据库”节点和“SQL Server”节点,然后单击“高级”。
在**“模板”列表中单击“SQL Server 2008 数据库项目”**。
在**“名称”**中,键入 MyTablesProject。
在**“位置”中,键入或浏览至要创建数据库项目的位置的路径,然后单击“确定”**。
数据库项目会创建并出现在**“解决方案资源管理器”**中。
接下来,在定义表项目中的表之前添加对架构项目的引用。
添加对架构项目的引用
在**“解决方案资源管理器”中,展开“MyTablesProject”节点,右击“引用”节点,然后单击“添加数据库引用”**。
**“添加数据库引用”**对话框将打开。
在**“数据库引用”中,验证是否指定了“当前解决方案中的数据库项目”**。
提示
如果此解决方案不包含引用的项目,则改为单击“数据库项目架构(.dbschema)”。 例如,若要防止开发存储过程的团队成员无意中更改架构或表项目,则可以使用此方法。
单击**“MySchemaProject”**。
重要事项 在复合项目中定义引用时,不要指定服务器变量及值或是数据库变量及值。 因为未定义任何变量,所以会假定引用的项目共享当前项目的目标服务器和数据库。
单击**“确定”**。
接下来,将在新架构中创建两个表。
在 Person 架构中定义表
在**“视图”菜单上,单击“数据库架构视图”**。
在**“架构视图”工具栏上,单击“外部元素”**。
由于 Person 架构在其他项目中进行定义,因此您必须执行此操作。
在**“架构视图”中,展开“MyTablesProject”节点,展开“架构”节点,右击“Person”节点,指向“添加”,然后单击“表”**。
提示
为使本演练保持简洁,将不更新表定义。
**“添加新项”**对话框打开。
在**“模板”列表中,单击“表”**。
在**“名称”**中,键入 Contacts。
右击**“Person”节点,指向“添加”,然后单击“表”**。
**“添加新项”**对话框打开。
在**“模板”列表中,单击“表”**。
在**“名称”**中,键入 StateProvince。
接下来将生成数据库项目。
生成表项目
在**“解决方案资源管理器”中,右击“MyTablesProject”节点并单击“生成”**。
接下来,将为存储过程创建第三个数据库项目。
为存储过程创建数据库项目
为存储过程创建数据库项目
在**“文件”菜单上指向“添加”并单击“新建项目”**。
将打开**“新建项目”**对话框。
在**“已安装的模板”下,展开“数据库”节点,然后单击“SQL Server”**。
提示
如果您使用的是 Visual Studio 专业版,请在“已安装的模板”下进行查看,依次展开“数据库”节点和“SQL Server”节点,然后单击“高级”。
在**“模板”列表中单击“SQL Server 2008 数据库项目”**。
在**“名称”**中,键入 MySprocProject。
在**“位置”中,键入或浏览至要创建数据库项目的位置的路径,然后单击“确定”**。
数据库项目会创建并出现在**“解决方案资源管理器”**中。
接下来,将修改存储过程项目,使该项目引用架构项目。
添加对架构项目的引用
在**“解决方案资源管理器”中,展开“MySprocProject”节点,右击“引用”节点,然后单击“添加数据库引用”**。
**“添加数据库引用”**对话框将打开。
在**“数据库引用”中,验证是否指定了“当前解决方案中的数据库项目”**。
单击**“MySchemaProject”**。
重要事项 在复合项目中定义引用时,不要指定服务器变量及值或是数据库变量及值。 因为未定义任何变量,所有您引用的所有项目都会部署到同一目标服务器和数据库。
单击**“确定”**。
接下来,将修改存储过程项目,使该项目引用 MyTablesProject 项目。
添加对表项目的引用
在**“解决方案资源管理器”中,右击 MySprocProject 节点下的“引用”节点,然后单击“添加数据库引用”**。
**“添加数据库引用”**对话框将打开。
在**“数据库引用”中,验证是否指定了“当前解决方案中的数据库项目”**。
单击**“MyTablesProject”**。
重要事项 在复合项目中定义引用时,不要指定服务器变量及值或是数据库变量及值。 因为未定义任何变量,所有您引用的所有项目都会部署到同一目标服务器和数据库。
单击**“确定”**。
接下来将创建架构中的存储过程。
定义引用 Person 架构中的表的存储过程
在**“视图”菜单上,单击“数据库架构视图”**。
在**“架构视图”工具栏上,单击“外部元素”**。
由于 Person 架构在其他项目中进行定义,因此您必须执行此操作。
在**“架构视图”中,展开 MySprocProject 节点,展开“架构”节点,右击“Person”节点,指向“添加”,然后单击“存储过程”**。
**“添加新项”**对话框打开。
在**“名称”中,键入 uspCountContacts,然后单击“添加”**。
该存储过程会添加到项目中,并出现在 Transact-SQL 编辑器中。
在 Transact-SQL 编辑器中,更新该存储过程以匹配下面的代码:
CREATE PROCEDURE [Person].[uspCountContacts] AS SELECT COUNT(*) FROM [Person].[Contacts]
在**“文件”菜单上,单击“全部保存”**。
接下来,将配置、生成并部署 MySprocProject 及其依赖项。
配置、生成和部署数据库
配置 MySchemaProject 以进行部署
在**“解决方案资源管理器”中,右击“MySchemaProject”节点并单击“属性”**。
在属性页上,单击**“部署”**选项卡。
在**“部署操作”列表中,单击“创建部署脚本(**.sql)并部署到数据库”。
单击**“目标数据库设置”旁边的“编辑”**。
指定与部署此数据库项目所用目标服务器的连接,然后单击**“确定”**。
在**“目标数据库名称”**中,键入 MySprocProject。
重要事项 必须为组成复合项目的所有三个项目指定相同的目标数据库名称,否则部署会失败。
在**“文件”菜单上,单击“全部保存”**。
接下来,将配置 MyTablesProject 的属性。
配置 MyTablesProject 以进行部署
在**“解决方案资源管理器”中,右击“MyTablesProject”节点并单击“属性”**。
在属性页上,单击**“部署”**选项卡。
在**“部署操作”列表中,单击“创建部署脚本(**.sql)并部署到数据库”。
单击**“目标数据库设置”旁边的“编辑”**。
指定与部署此数据库项目所用目标服务器的连接,然后单击**“确定”**。
在**“目标数据库名称”**中,键入 MySprocProject。
重要事项 必须为组成复合项目的所有三个项目指定相同的目标数据库名称,否则部署会失败。
在**“文件”菜单上,单击“全部保存”**。
接下来,将配置 MySprocProject 的属性。
配置 MySprocProject 以进行部署
在**“解决方案资源管理器”中,右击“MySprocProject”节点并单击“属性”**。
在属性页上,单击**“部署”**选项卡。
在**“部署操作”列表中,单击“创建部署脚本(**.sql)并部署到数据库”。
单击**“目标数据库设置”旁边的“编辑”**。
指定与部署此数据库项目所用目标服务器的连接,然后单击**“确定”**。
在**“目标数据库名称”**中,键入 MySprocProject。
重要事项 必须为组成复合项目的所有三个项目指定相同的目标数据库名称,否则部署会失败。
在**“文件”菜单上,单击“全部保存”**。
接下来将生成数据库项目。
生成并部署开发数据库
在**“解决方案资源管理器”中,右击“MySprocProject”节点并单击“生成”**。
在**“解决方案资源管理器”中,右击“MySprocProject”节点并单击“部署”**。
您的数据库随即生成,并与其依赖项一起部署到指定的目标服务器。
后续步骤
可以使用此方法同时处理数据库的较小部分。 如果您希望处理存储过程的开发人员与表和架构定义隔离,则也可以引用 .dbschema 文件(而不是数据库项目)。