生成数据库并将其部署到临时或生产环境中

数据库开发人员分别执行各项开发任务,每位开发人员都在一个独立开发环境(通常称为“沙盒”)中工作。 将经过测试的数据库项目版本部署到临时或生产环境的过程与部署到开发环境类似,但两者也存在一些重要区别。

对临时服务器和生产服务器的访问一般会受到限制。 这些服务器可能包含必须保留的其他数据库。 目标数据库往往已经存在,并且可能包含必须保留的数据。 在这样的环境中部署数据库时,您可能不像部署到开发环境时那么希望修改服务器设置。 在某些情况下,您即使有部署数据库的权限,也未必有更新服务器设置的权限。

为部署到临时或生产环境而配置数据库项目

在数据库项目的部署属性中,可以配置该项目的设置,使其与临时和生产服务器环境相匹配。 这些设置与其他开发人员的独立开发环境设置相互分开。 通过这种设置独立性,您可以针对您的临时和生产环境设置项目配置,其他开发人员不能修改这些配置。 每个配置都有到临时或生产服务器的目标数据库连接,有自己的 .sqldeployment 文件和 .sqlcmdvars 文件。

您还可以配置临时和生产设置,以准备部署脚本但跳过实际部署。 采用此策略,可以检查部署脚本,在需要时进行更改,然后手动将其部署到目标环境中。

部署配置详细信息

将项目部署到临时或生产环境之前,应考虑以下问题:

  • 由于已经设置好临时或生产环境,您可能希望使用目标数据库的排序规则。

  • 您不希望每次都重新创建数据库,因为这样做会丢失数据。

  • 如果您在部署新的数据库,可能希望部署数据库属性。 如果正在部署对现有数据库的更新,您可能不希望部署数据库属性,因为应已正确设置数据库属性。

  • 您可能希望在部署过程中备份数据库,除非您已在部署过程之外另行备份了数据库对象和数据。

  • 如果可能发生数据丢失,您可能希望阻止部署,因为您正在更新的数据库通常包含生产数据。

  • 您可能想为数据库中存在而数据库项目中不存在的对象生成 DROP 语句。 您的数据库项目应代表临时和生产架构的正确版本。 在部署数据库更新后必须手动移动数据时属于例外情况。 在这种情况下,您要到迁移数据之后才会希望删除对象。

SQL 命令变量

部署到临时或生产环境时,变量应具有适合该环境的值。 例如,您可能希望临时或生产环境中的 Service Broker 或服务证书具有合适的值,这些值不同于开发环境中的值。 通过为每个目标环境指定不同的 .sqlcmdvars 文件,在更改部署目标时就不必再更改这些变量的值。 这样做也不需要针对 MSBuild 变量定义 .sqlcmdvars 文件以获得特定于配置的值。 您可以对要部署的每种配置准备不同的 .sqlcmdvars 文件。

部署服务器项目

数据库项目可以包含数据库对象或服务器对象的定义,也可以同时包含这两者的定义。 在大多数环境中,开发人员可以更改数据库对象,但只有数据库管理员可以更改服务器对象。 通过将服务器对象置于单独的项目(称为服务器项目)中,可以强制使用此约束。 然后,可以限制版本控制,从而只允许管理员更改服务器项目。 在临时或生产环境中,服务器项目及其对象通常与包含数据库对象的项目分开部署。

您可通过与部署架构项目相同的过程来部署服务器项目。

部署角色

必须将数据库中使用的角色部署到部署该数据库的所有服务器上。 将数据库部署到临时或生产服务器时,必须定义所需的全部用户并将这些用户与其相应的角色关联起来。

命令行部署

如果计算机上未安装 Visual Studio 高级专业版,但安装了以下系统必备组件,则可在该计算机上从命令提示符部署数据库项目:

  • Microsoft .NET Framework 3.5 Service Pack 1

  • SQL Server 管理对象 (SMO)

    在已安装 SQL Server 的所有计算机上都应安装这些对象。

除了这些系统必备组件之外,还必须将以下文件传输到该计算机上 - 传输时或许应先将其复制到通用串行总线 (USB) 驱动器上:

  • 数据库项目的生成输出(调试版或零售版)

  • Visual Studio 高级专业版 的 Deploy 文件夹内容

    此文件夹一般位于 [Program Files]\VSTSDB\Deploy 中。

  • SQL Server Compact Edition 的程序集

安装这些系统必备组件并传输文件之后,可以将数据库项目(以 .dbschema 文件的形式)部署到目标数据库。

常规任务

下表列出了支持此方案的常规任务的说明,还提供了一些链接,这些链接指向有关如何成功完成这些任务的更多信息。

任务

支持主题

生成和部署入门:配置、生成和部署您的第一个数据库项目之前,您可能想了解如何在团队环境中使用数据库项目。 还可以进一步了解生成和部署过程。 此外,还可以了解用于控制项目生成和部署方式的所有属性和设置。

仅部署已完成的对象:如果文件中包含您未准备好进行部署或测试的数据库对象的定义,您可以从部署中排除这样的文件。

针对生成过程配置数据库项目:您可以配置用于控制数据库项目生成方式的设置。 例如,可以指定输出路径。

针对部署配置数据库项目:

  • 通过将配置与目标数据库、包含部署详细信息的文件和包含影响部署的变量的文件相关联,可以配置任何生成配置的部署。

  • 可通过修改包含部署详细信息的文件来控制部署的详细信息。

  • 可以自定义变量,以便在每个部署中使用不同的 Service Broker 或服务证书。

  • 可以控制在部署数据库时是否更新数据库属性,还可以控制这些属性应有什么值。

填充引用或查找表:部署数据库项目时,可将引用数据添加到表中。 对于包含不经常更改的数据的表,如发货人信息,您可以选择这样做。

生成数据库项目:可在 Visual Studio 中或通过 MSBuild 从命令提示符生成数据库项目,从而准备部署。

部署数据库项目:可在 Visual Studio 中,作为数据库单元测试运行的一部分使用 MSBuild 或者使用 VSDBCMD 从命令提示符部署数据库项目,从而更新目标数据库或服务器。

此外,如果您定义一个自定义工作流,还可以使用 Team Foundation Build 部署数据库项目。

疑难解答:可以了解有关如何解决生成和部署数据库项目的最常见问题的更多信息。

相关方案

请参见

概念

编写和更改数据库代码

创建和修改数据库和服务器对象