管理数据库更改
如果您开发并维护企业级数据库,您的责任可能包括与软件开发团队协调时间表和更改事宜,以便创建统一的数据库应用程序。 通过采用与组织中的软件开发人员所使用的工具和过程尽可能类似的工具和过程,可以极大地减少此协调任务所需的工作量。
随着很多团队都转向更加迭代的快速开发范例(例如,敏捷方法)来编写代码,软件和数据库开发人员对版本控制等工具的需求变得更加强烈。 这些工具可以降低与基于团队的开发相关的风险。 通过使用类似的工具和过程,不仅能为要管理的数据库带来极大的好处,还能使这些数据库以及与它们交互的软件之间的集成点受益匪浅。
Visual Studio 的作用
Visual Studio可促使团队成员采取整体观念并将重点放在应用程序的行为(而不是实现细节)上,从而帮助您与其他软件开发人员协调工作。 此方法不同于将成品数据库(及其数据)视为应用程序世界中心的模型。 Visual Studio提供了一个面向完整应用程序(包括数据和逻辑)的解决方案集。 若要生成运行良好、易于维护并且可以尽快交付的应用程序,企业级开发组织必须采取这种综合性应用程序观点。
Visual Studio提供了面向当今数据库开发人员和数据库管理员角色的功能。 例如,Visual Studio支持针对每位数据库专业人员的“独立开发环境”的概念。 团队成员可以从事与架构相关的活动,而不会给其他团队成员或生产环境造成妨碍。 在长期规划中,将增加针对数据库架构师角色的功能并扩展针对数据库管理员的功能。
高级目标
Visual Studio 的数据库功能旨在实现以下高级目标:
提供基于数据库应用程序的集成更改管理的基础。
提供有助于管理数据库项目的工具。
提供有助于理解差异的工具。
提供有助于进行更改并评估更改效果的工具。
提供有助于通过在独立环境中工作来降低与更改关联的风险的工具。
提供有助于测试更新的解决方案的工具。
提供用于简化数据库更改部署的工具。
提供便于复杂数据库协作开发的工具。
高级任务
为了支持上述目标,Visual Studio将帮助您执行以下高级任务:
创建并部署处于版本控制之下的新数据库。
通过使用数据库项目将现有数据库架构置于版本控制之下。 数据库项目架构通过导入数据库或现有脚本中的架构来创建。
修改数据库的脱机表示形式,然后再部署更改。
比较数据库之间的架构或数据。
开发单元测试并对数据库对象运行这些测试。
生成可预测且有代表性的测试数据,而不危及敏感生产数据的安全。
重命名数据库表、列、视图或其他对象并将这些更改传播到其余的数据库项目,包括关联的单元测试、视图、存储过程、触发器等。
创建、编辑、验证、执行并分析脚本和查询。
数据库开发生命周期
Visual Studio 支持一个可与新工具配合使用的过程。 您可以将此过程视为数据库开发生命周期,该过程为每位数据库专业人员都提供了一个在其中工作和测试更改的独立开发环境。 在对更改进行了测试之后,团队成员将通过版本控制系统共享更改。 数据库开发生命周期包括下列阶段:
建立项目环境
执行独立的迭代开发
生成项目
从项目环境中进行部署
建立项目环境
下图说明扮演数据库管理员 (DBA) 角色的团队成员如何建立项目环境:
首先,DBA 创建一个数据库项目并从成品数据库中导入数据库架构。 然后,DBA 可以创建一个数据生成计划,以便创建要在独立开发环境中使用的测试数据。 最后,DBA 将该数据库项目签入到版本控制中,以供团队使用。
执行独立的迭代开发
下图说明团队成员如何在独立环境中执行迭代开发工作:
每位数据库专业人员都与版本控制同步其开发环境。 他们可以在文件更改后签出文件,并在独立环境中对这些更改进行开发和测试。 这样,他们对自己的数据库项目副本所做的更改仅会部署到各自的独立开发环境中。 当某位团队成员生成实际测试数据并对数据库的私有副本运行单元测试时,该团队成员便将这些更改签入到版本控制中。 其他团队成员将从版本控制中获取经过测试的更改。
生成项目的每日版本
下图说明数据库项目的生成周期是如何运转的:
每日版本是通过与数据库项目在版本控制系统中的最新测试版本进行同步而生成的。 可以将该版本部署到测试数据库中,然后对生成的测试数据运行单元测试。
从项目环境中进行部署
下图说明 DBA 如何将数据库项目的某个版本部署到生产环境中:
到了将数据库的某个版本部署到生产环境中时,DBA 将与版本控制系统中的标签同步。 然后,DBA 检索数据库项目的匹配文件、相关脚本和测试。 接下来,DBA 生成 .dbschema 文件。 从 .dbschema 文件,DBA 将生成部署脚本并根据需要进行手动修改,然后对临时服务器执行测试部署。 DBA 重复此过程,直到可以将该脚本部署到成品服务器为止。 如果 DBA 更改了架构、预先部署脚本或后期部署脚本,则这些更改将被重新签入到版本控制中。