可以使用分部项目将开发与数据库项目中的某些对象隔离。 通过将数据库拆分为分部项目,并限制对已导入分部项目中的对象的版本控制访问,可以防止用户无意中更改其不应更新的数据库项目的一部分。
可以导出任何对象或对象组作为分部项目。 例如,可能导出架构定义及其内容。 还可能按对象类型导出对象,同时将表放入一个项目,将视图放入另一个项目等等。
在本演练中,您将执行以下步骤:
- 创建您的数据库中架构和两个表的定义所在的源数据库项目 
- 导出对象作为分部项目 
- 创建开发数据库项目 
- 将分部项目中的对象导入到开发项目中 
- 定义引用所导入对象的存储过程 
- 配置、生成和部署开发项目 
系统必备
必须已安装 Visual Studio,并且对运行 SQL Server 的服务器具有写访问权限。
创建源数据库项目及其对象
如果已有包含架构和表的数据库项目,则可以使用该项目代替在演练的此步骤中创建的项目。
创建源数据库项目
- 在**“文件”菜单上指向“新建”,再单击“项目”**。 - 将打开**“新建项目”**对话框。 
- 在**“已安装的模板”下,展开“数据库”节点,然后单击“SQL Server”**。 - 提示 - 如果您使用的是 Visual Studio 专业版,请在“已安装的模板”下进行查看,依次展开“数据库”节点和“SQL Server”节点,然后单击“高级”。 
- 在模板列表中单击**“SQL Server 2008 数据库项目”**。 - 提示 - 如果目标部署数据库的 SQL Server 版本不同,则可以指定与您的 SQL Server 版本匹配的项目类型。 
- 在**“名称”**中,键入 MySourceDatabase。 
- 在**“位置”中,键入或浏览至要创建数据库项目的位置的路径,然后单击“确定”**。 .gif) 重要事项 重要事项- 如果路径过长,则在此演练中稍后尝试导入分部项目时可能会收到错误。 可以使用较短的路径避免这些错误。 - 此时即创建了数据库项目,并将其显示在**“解决方案资源管理器”**中。 - 接下来将定义该架构中的架构和表。 
定义架构
- 在**“视图”菜单上,单击“数据库架构视图”**。 
- 展开**“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 架构、架构中定义的表以及存储过程。 现在可将项目添加到版本控制中,然后设置权限以限制哪些开发人员可以修改存储过程的定义。