Database 如何在持续集成过程中包括我的数据库?

Database 如何在持续集成过程中包括我的数据库?,database,teamcity,dbghost,Database,Teamcity,Dbghost,请原谅,今天是我尝试使用TeamCity设置CI环境的第一天。我正在开发一个ASP.NET/Sql Server应用程序,目前为止还不错。MSBuild是我的提供程序 我想知道,作为集成过程的一部分,在自动确保本地数据库的更改上传到测试服务器时,选项是什么。现在,我不太确定我是否想使用DBGhost来自动同步模式更改,我很乐意将测试服务器上的数据库替换为本地数据库的副本 我的选择是什么 编辑:进一步的调查显示RedGate SQL产品在这方面很好。但它们并不便宜。他们有一份关于在持续集成过程中使

请原谅,今天是我尝试使用TeamCity设置CI环境的第一天。我正在开发一个ASP.NET/Sql Server应用程序,目前为止还不错。MSBuild是我的提供程序

我想知道,作为集成过程的一部分,在自动确保本地数据库的更改上传到测试服务器时,选项是什么。现在,我不太确定我是否想使用DBGhost来自动同步模式更改,我很乐意将测试服务器上的数据库替换为本地数据库的副本

我的选择是什么


编辑:进一步的调查显示RedGate SQL产品在这方面很好。但它们并不便宜。他们有一份关于在持续集成过程中使用其产品的白皮书:

首先,我认为您的数据库应该包括在源代码管理策略中。实现这一目标的基本原则在本文中得到了完美的总结。你也可以查一下。有关更多实用信息,请查看的答案

正如我在中所写的,我维护两组脚本:一组可以从头开始构建数据库,另一组可以将给定数据库从一个版本升级到最后一个版本。作为CI战略的一部分:

  • 应使用这些脚本从头开始重建CI服务器上的数据库。然后可以检查脚本是否处于工作状态
  • 在一个完美的世界中,我应该能够从数据库的版本N-1升级到版本N,并将获得的模式与以前数据库的模式进行比较。我还在努力
  • 测试数据应该注入到数据库中,这样就可以执行应用程序的单元测试(您可以这样做)

另一个复杂问题是,我拥有当前正在生产的系统的所有权,并且数据库包含大量需要迁移到任何新模式的信息。为了让事情变得更烦人,在开发过程中将在生产系统中插入新数据。