演练:使用分部项目对数据库项目进行分区
可以使用分部项目将开发与数据库项目中的某些对象隔离。 通过将数据库拆分为分部项目,并限制对已导入分部项目中的对象的版本控制访问,可以防止用户无意中更改其不应更新的数据库项目的一部分。
可以导出任何对象或对象组作为分部项目。 例如,可能导出架构定义及其内容。 还可能按对象类型导出对象,同时将表放入一个项目,将视图放入另一个项目等等。
在本演练中,您将执行以下步骤:
创建您的数据库中架构和两个表的定义所在的源数据库项目
导出对象作为分部项目
创建开发数据库项目
将分部项目中的对象导入到开发项目中
定义引用所导入对象的存储过程
配置、生成和部署开发项目
系统必备
必须已安装 Visual Studio,并且对运行 SQL Server 的服务器具有写访问权限。
创建源数据库项目及其对象
如果已有包含架构和表的数据库项目,则可以使用该项目代替在演练的此步骤中创建的项目。
创建源数据库项目
在**“文件”菜单上指向“新建”,再单击“项目”**。
将打开**“新建项目”**对话框。
在**“已安装的模板”下,展开“数据库”节点,然后单击“SQL Server”**。
提示
如果您使用的是 Visual Studio 专业版,请在“已安装的模板”下进行查看,依次展开“数据库”节点和“SQL Server”节点,然后单击“高级”。
在模板列表中单击**“SQL Server 2008 数据库项目”**。
提示
如果目标部署数据库的 SQL Server 版本不同,则可以指定与您的 SQL Server 版本匹配的项目类型。
在**“名称”**中,键入 MySourceDatabase。
在**“位置”中,键入或浏览至要创建数据库项目的位置的路径,然后单击“确定”**。
重要事项 如果路径过长,则在此演练中稍后尝试导入分部项目时可能会收到错误。 可以使用较短的路径避免这些错误。
此时即创建了数据库项目,并将其显示在**“解决方案资源管理器”**中。
接下来将定义该架构中的架构和表。
定义架构
在**“视图”菜单上,单击“数据库架构视图”**。
展开**“MySourceDatabase”节点,展开“架构”节点,右击“架构”节点,指向“添加”,然后单击“架构”**。
**“添加新项”**对话框打开。
在**“模板”列表中,单击“架构”**。
在**“名称”中,键入 Person,然后单击“添加”**。
接下来将创建新架构中的表。
在 Person 架构中定义表
在**“架构视图”中,右击“Person”节点,指向“添加”,然后单击“表”**。
提示
为使本演练保持简洁,将不更新表定义。
**“添加新项”**对话框打开。
在**“模板”列表中,单击“表”**。
在**“名称”中,键入 Contacts,然后单击“添加”**。
右击**“Person”节点,指向“添加”,然后单击“表”**。
**“添加新项”**对话框打开。
在**“模板”列表中,单击“表”**。
在**“名称”中键入 StateProvince,然后单击“添加”**。
接下来将导出 Person 架构及其对象。
导出对象作为分部项目
导出对象作为分部项目
在**“解决方案资源管理器”中,展开“架构对象”节点,然后展开“架构”**节点。
此时将显示**“Person”**节点。
依次展开**“数据库级别对象”节点、“安全”节点和“架构”**节点。
此时将显示**“Person.schema.sql”**文件。
右击**“Person”节点,然后单击“导出为分部项目”**。
**“另存为”**对话框打开。
在**“文件名”中,键入 ExportedPersonSchema,然后单击“保存”**。
记下保存分部项目的文件夹。
在**“文件”菜单上,单击“关闭解决方案”。 如果提示您保存对解决方案的更改,请单击“是”**。
接下来将创建一个项目,从中要开发引用 Person 架构中表的存储过程。
创建开发数据库项目
创建开发数据库项目
在**“文件”菜单上指向“新建”,再单击“项目”**。
将打开**“新建项目”**对话框。
在**“已安装的模板”下,展开“数据库”节点,然后单击“SQL Server”**。
提示
如果您使用的是 Visual Studio 专业版,请在“已安装的模板”下进行查看,依次展开“数据库”节点和“SQL Server”节点,然后单击“高级”。
在模板列表中单击**“SQL Server 2008 数据库项目”**。
提示
如果目标部署数据库的 SQL Server 版本不同,则可以指定与您的 SQL Server 版本匹配的项目类型。
在**“名称”**中,键入 MyDevelopmentDatabase。
在**“位置”中,键入或浏览至要创建数据库项目的位置的路径,然后单击“确定”**。
此时即创建了数据库项目,并将其显示在**“解决方案资源管理器”**中。
接下来将导入在前一过程中导出的分部项目。
导入分部项目中的对象
导入分部项目
在**“解决方案资源管理器”中,右击“MyDevelopmentDatabase”项目节点,然后单击“导入分部项目”**。
在确认对话框中单击**“是”**。
在**“打开”**对话框中,浏览到包含从 MySourceDatabase 导出的分部项目的文件夹。
单击**“ExportedPersonSchema.files”文件,然后单击“打开”**。
此时项目经过卸载和重新加载,并在**“解决方案资源管理器”**中显示名为 MySourceDatabaseBasePath 的文件夹。
展开**“MySourceDatabaseBasePath”**文件夹。
此文件夹包含从源数据库导出的文件。
接下来将定义引用在 Person 架构中定义的表的存储过程。
定义引用所导入对象的存储过程
定义简单的存储过程
在**“视图”菜单上,单击“数据库架构视图”**。
在**“架构视图”中,展开“MyDevelopmentDatabase”节点,然后展开“架构”**节点。
右击**“Person”节点,指向“添加”,然后单击“存储过程”**。
**“添加新项”**对话框打开。
在**“名称”中,键入 uspCountContacts,然后单击“添加”**。
此时该存储过程即添加到项目中,并显示在 Transact-SQL 编辑器中。
在 Transact-SQL 编辑器中,按以下内容更新代码:
CREATE PROCEDURE [Person].[uspCountContacts] AS SELECT COUNT(*) FROM [Person].[Contacts]
在**“文件”菜单上,单击“全部保存”**。
接下来将配置开发数据库项目,生成该项目,然后将其部署到目标数据库。
配置、生成和部署开发项目
配置、生成和部署开发数据库
在**“解决方案资源管理器”中,右击“MyDevelopmentDatabase”节点,然后单击“属性”**。
在属性页上,单击**“部署”**选项卡。
在**“部署操作”列表中,单击“创建部署脚本(.sql)并部署到数据库”**。
在**“目标数据库设置”下,单击“编辑”**。
指定与要部署此项目的目标服务器的连接,然后单击**“确定”**。
在**“文件”菜单上,单击“全部保存”**。
在**“解决方案资源管理器”中,右击“MyDevelopmentDatabase”** 节点,然后单击**“生成”**。
在**“解决方案资源管理器”中,右击“MyDevelopmentDatabase”节点,然后单击“部署”**。
此时数据库即部署到指定的服务器。
后续步骤
部署包括 Person 架构、架构中定义的表以及存储过程。 现在可将项目添加到版本控制中,然后设置权限以限制哪些开发人员可以修改存储过程的定义。