Visual Studio 数据库功能的体系结构概述

Visual Studio 为数据库开发人员提供了许多工具、特性和功能,与其为应用程序开发团队中的其他成员提供的工具、特性和功能相同。 例如,软件开发人员用于源代码的版本控制系统及其他生命周期工具同样可用于您的数据库。 由于 Visual Studio 的体系结构与 Visual Studio Team Foundation Server 紧密集成,因此您可以更加轻松地管理数据库开发过程,同时增强与开发应用程序其他方面的人员的协调。

有关支持 Visual Studio 中的数据库开发的功能的更多信息,请参见管理数据库更改

Visual Studio 集成

不仅 Visual Studio 的核心体系结构与 Visual Studio Team Foundation Server 紧密集成,而且不同组件的界面也保持一致。 在 Visual Studio 中,您处理数据库项目、服务器项目和数据层应用程序项目的方式在诸多方面与处理其他类型项目的方式相同。 特定于数据库的模板显示在**“新建项目”“添加项目项”**对话框中。 此外,您可以执行专为数据库开发而设计的操作(例如生成和部署)以及配置专为数据库开发而设计设置(例如目标数据库连接和数据库排序规则)。

数据库项目在**“解决方案资源管理器”**中显示为现有项目类型的同级项。 您可以将这些项目置于版本控制下,添加和移除项目项,以及使用 MSBuild 生成这些数据库项目。

体系结构组成

Visual Studio 的体系结构包含以下方面:

  • 数据库项目

  • 数据库生命周期基础结构

每个数据库项目都是某个数据库的脱机表示形式,并位于一个 Visual Studio 解决方案的结构中。 对数据库项目所做的更改须经过生成和部署才能对 Microsoft SQL Server 2005 或 Microsoft SQL Server 2008 的活动实例生效。

数据库生命周期基础结构

数据库生命周期基础结构在数据库项目与数据库的逻辑表示形式(模型)之间提供了多种服务。 此基础结构包含任何数据库项目都必需的基础功能。 这些功能统称为数据库项目基础。 在此基础上生成的功能称为数据库项目功能。

数据库项目基础

数据库项目基础包含以下核心功能:

  • 项目和项目项分析
    数据库项目基础将对数据库项目内容和诸如表、视图和存储过程等数据库项目项进行分析。 通过执行上述分析,它将从组成数据库项目的脚本文件中提取出关于数据库对象的信息。 例如,当您从现有数据库脚本导入数据库对象时,系统将执行此功能。 数据库项目由 Transact-SQL 脚本的集合组成。 数据库项目系统会对这些脚本进行解释,以便您可以将它们作为逻辑架构对象与之交互。

  • 导入数据库架构
    通过使用导入数据库架构这一功能,可以将现有数据库放入到 Visual Studio中,并将其置于版本控制下。 即使处于数据库在版本控制下管理的环境中,活动数据库服务器上可能仍然会发生更改而导致不得不将更改体现到数据库项目中。 此时,您可以使用架构比较功能将更改从数据库服务器导入到正在进行开发的数据库项目中。

  • 跟踪数据库对象之间的依赖项
    数据库项目系统会自动跟踪数据库对象之间的依赖项。 通过跟踪对象之间的依赖项,您可以确保生成和部署正确的对象。 如果您对产品引入了一项会导致工作中断的更改,在首次保存该更改时便会发现它是一项会导致工作中断的更改。 可以使用架构依赖关系查看器来查看和定位数据库对象之间的依赖关系。 通常,在尝试生成、部署或运行数据库单元测试时才会发现会导致工作中断的更改。 数据库重构使用这些依赖项确定所需的更改,数据生成可以将依赖关系作为数据生成计划的组成部分显示给您。

  • 数据库重构
    数据库重构确定数据库对象之间的依赖项,并使用该信息在整个数据库以及单元测试项目之间准确传播更改。 数据库重构仅在 Visual Studio 高级专业版和 Visual Studio 旗舰版中可用。

  • 为新的部署和现有部署创建部署脚本
    部署脚本用于创建数据库或更新现有数据库以与数据库项目中的架构相匹配。 部署脚本由预先部署脚本、数据库对象创建脚本和后期部署脚本组成。 如果您在部署时部署到现有数据库,会将数据库项目与目标数据库当前的架构进行比较。 然后生成一个更新脚本,该脚本混合使用 ALTER、CREATE 和 DROP 语句来更新目标数据库。

  • 验证生成
    此功能包括对数据库项目中对象的结构和关系进行验证,对预先部署脚本和后期部署脚本的语法进行验证,以及在随后向您报告上述验证的结果。

数据库项目功能

除了为数据库项目提供上述的核心服务之外,还在数据库项目基础之上构建了其他功能。 这些功能包括:

  • 比较数据库架构
    此功能可用于比较两个数据库架构,无论它们位于数据库项目的当前版本中、生成数据库项目时创建的已编译 .dbschema 文件的早期版本中还是一个或多个活动数据库中。 此外,还可以生成用于使目标数据库的结构与源数据库的结构相匹配所需的脚本。 架构比较仅在 Visual Studio 高级专业版和 Visual Studio 旗舰版中可用。

  • 比较数据库数据
    此功能用于比较两个数据库中的数据,前提是活动数据库的架构相匹配。 此外,还可以生成使目标数据库中的数据与源数据库中的数据相匹配所需的脚本。 数据比较仅在 Visual Studio 高级专业版和 Visual Studio 旗舰版中可用。

  • 数据库单元测试
    自动为存储过程或函数生成单元测试,并支持手动创建由任何有效 Transact-SQL 组成的单元测试。 通过使用此服务,您可以验证在其他位置引入的更改不会导致您的工作中断。 作为单元测试的一部分,您可以自动生成和部署数据库,并生成可重复的测试数据以建立一致的起始状态。 此服务还包含一个公共 API,可以用于编写自定义测试条件来为单元测试添加可重用的验证逻辑。 可以在 Visual Studio 专业版、Visual Studio 高级专业版 或 Visual Studio 旗舰版 中运行数据库单元测试,但要创建或修改数据库单元测试,则必须具有 Visual Studio 高级专业版 和 Visual Studio 旗舰版。

  • 生成数据
    此功能用于使用真实测试数据填充数据库,由于可能包含机密信息,所生成的测试数据并非完全是生产数据的副本。 还可以创建自定义数据生成器。 此服务还包含一个公共 API,用于编写自定义数据生成器以与 CLR 数据类型、用户定义的类型及用户定义的数据类型配合使用,或将自定义数据生成算法用于内置类型。 只有具有 Visual Studio 高级专业版和 Visual Studio 旗舰版才能创建或修改数据生成计划。

  • 创作和执行数据库脚本
    提供一个 Transact-SQL 编辑器,您可以在其中创建、分析和执行数据库脚本,使用方法与查询分析器或 SQL Server Management Studio 的使用方法类似。 此编辑器同时用于修改数据库项目中的脚本。 由于是同一个编辑器,因此无论您处理脱机数据库项目还是对活动的数据库服务器直接执行脚本,编辑器的用户界面都是一致的。

命令行支持

某些定期执行的操作必须能够作为自动化过程的一部分运行。 为支持此方案,您可以从命令行生成、部署数据库项目以及运行单元测试,其中可以包括生成代表性、可预测的测试数据。

请参见

任务

演练:创建独立数据库开发环境

演练:为独立开发环境建立基线

演练:在独立开发环境中执行迭代数据库开发

概念

管理数据库更改

扩展 Visual Studio 的数据库功能