生成数据库并将其部署到独立开发环境中

在独立开发环境(常称为“沙盒”)中,您和您的团队成员可以更新、生成和部署数据库代码,而不会引入相互冲突的更改。 生成测试数据并运行数据库单元测试以后,可将您的代码版本部署到临时或测试服务器,在那里您的版本将与其他开发人员的代码合并。 部署数据库项目之前,可根据是否将其部署到独立开发环境中(而不是临时或生产服务器上)来配置该数据库项目的属性。

针对本地部署配置数据库项目

配置部署属性时,可对特定于独立开发环境的目标数据库连接、.deploymentconfig 文件和 .sqlcmdvars 文件进行标识。 在数据库项目的部署属性中,可对独立开发环境的设置进行配置,使其有别于存储在数据库项目中的部署设置。 因此,您可以提供到独立开发数据库的目标数据库连接、一个不同的 .deploymentconfig 文件和一个不同的 .sqlcmdvars 文件。

部署配置详细信息

将项目部署到独立开发环境之前,应先解决以下问题:

  • 您可能要使用数据库项目的排序规则,因为开发环境大都与目标临时环境或生产环境相匹配。

  • 由于没有必须保留的生产数据,您可能总是希望重新创建数据库。

  • 由于要将开发环境设置为与目标临时环境或生产环境相匹配,您可能想对数据库属性进行部署。

  • 您不想备份数据库,因为这样做会增加部署开销,而且如果每次部署都重新创建数据库,这种做法也毫无益处。

  • 您可能不会由于担心丢失数据而阻止部署,因为您正在生成测试数据,而不是在处理生产数据。 如果不希望所做的更改导致数据丢失,您可能希望阻止部署以防遭受数据丢失的风险。

  • 您不想为数据库中存在而数据库项目中不存在的对象生成 DROP 语句。 您可能已暂时排除数据库项目中的不完整对象,或者在目标数据库中可能有要保留的对象原型。

SQL 命令变量

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

部署服务器项目

部署数据库项目时,将部署该数据库的对象和设置。 部署服务器项目时,将部署在 master 数据库中定义的对象,但不更改服务器设置。 可以忽略服务器设置,或者可以验证目标服务器上的某些或全部设置的值是否与您在服务器项目中指定的值相匹配。

除了处理设置的方式不同之外,可通过与部署数据库项目相同的过程来部署服务器项目。

部署角色

必须将数据库中使用的角色部署到部署数据库的所有服务器上。 然而,在开发环境中,您可以限制必须与各个角色相关联的用户数。 通常,为了进行测试,您要为每个角色至少关联一名用户,但您不必将完整用户集部署到独立开发环境中。

命令行部署

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

  • Microsoft .NET Framework 4 版

  • SQL Server 管理对象 (SMO)

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

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

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

  • Visual Studio 的 Deploy 文件夹内容

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

  • SQL Server Compact Edition 的程序集

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

引用数据

可以向数据库项目中的后期部署脚本添加语句,从而使用引用数据填充一个或多个表。 有关更多信息,请参见部署数据库时在表中添加引用数据

若要同步一个或多个表,还可将部署的数据库与包含引用数据的数据库进行比较。 有关更多信息,请参见将一个或多个表中的数据与引用数据库中的数据进行比较和同步

常规任务

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

任务

支持主题

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

从实践中学习:通过完成介绍性演练,您可以迅速了解从创建独立开发环境到建立基线和执行迭代开发的整个过程。

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

针对生成配置项目:您可以配置用于控制数据库项目生成方式的设置。 例如,可以指定应将警告视为错误。

针对部署配置项目:

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

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

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

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

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

生成数据库项目:可在 Visual Studio 中或通过 MSBuild 从命令提示符生成数据库项目。 可以配置错误或警告的最大数量;如果想忽略警告,则可禁止显示警告。 无论在生成数据库项目之前还是之后,都可以作为生成的一部分来执行操作。

部署数据库项目:可在 Visual Studio 中、使用 MSBuild 或者使用命令行工具 VSDBCMD 部署数据库项目,从而更新目标数据库或服务器。 签入对数据库项目的更改之前,还可能需要检测整个团队生成和部署是否成功。

疑难解答:可以了解有关如何解决最常见的生成和部署问题的更多信息,例如解决对 SQL 公共语言运行时 (CLR) 项目和程序集进行重命名时产生的问题。

后续步骤

签入更改之前,应考虑运行数据库单元测试,以验证数据库是否按预期方式工作。 可以编写其他测试来验证已编写的任何代码。 也可以选择在运行测试时部署项目并生成测试数据。 有关更多信息,请参见使用单元测试验证数据库代码

相关方案

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

开始数据库的团队开发

开始对引用其他数据库的数据库进行团队开发

对引用共享服务器对象的数据库开始团队开发

开始引用 SQLCLR 对象的数据库的团队开发

请参见

概念

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

开始团队数据库开发